(转)Struts Validation 需要注意的细节

1. validation.xml 中的Resourse属性
------------------------------------------------------------------------------
     <field property="username" depends="maxlength">
        <arg0 name="maxlength" key="${var:maxlength}" resource="false" />
        <var>
          <var-name>maxlength</var-name>
          <var-value>10</var-value>
        </var>
      </field>
------------------------------------------------------------------------------

来,我们将它支解掉。:)  好象没有什么好说的。很简单。这是某个form下的一个properties的标准写法。其中我们要重视一下这句话: <arg0 name="maxlength" key="${var:maxlength}" resource="false" /> , resource属性指的是:是从资源文件里面读key的值吗? 
                                  if (resource == "false") {
                                        请取当前定义的变量的值。[因为为false的时候,因为得必须得给个值来组装错误信息,因为此时我们不会到消息资源文件里提取值]
                                  } else if (resource == "true) {
                                       请到资源文件里提取用来组装错误消息的值.
                                 }
你会问:如果我不指定resourse的值怎么样?默认是true,即:默认下它会去读properties文件里面的值。 (这似乎与java的boolean的默认是false有点违背),如果我没有配呢?那么是null.

当然我也做了一个实验证明了这点:

properties file tips
------------------------------------------------------------------------------
errors.maxlength = The length of the password can not surpass {0}
------------------------------------------------------------------------------
validation.xml tips :
------------------------------------------------------------------------------
     <field property="username" depends="maxlength">
        <arg0 name="maxlength" key="${var:maxlength}" resource="false" />
        <var>
          <var-name>maxlength</var-name>
          <var-value>10</var-value>
        </var>
      </field>
------------------------------------------------------------------------------
如果username的长度超过10的话,那么打印的是:The length of the password can not surpass 10

resouse属性改成true,
properties file tips
------------------------------------------------------------------------------
errors.maxlength = The length of the password can not surpass {0}
username.maxlength  = 10
------------------------------------------------------------------------------
validation.xml tips :
------------------------------------------------------------------------------
     <field property="username" depends="maxlength">
        <arg0 name="maxlength" key="username.maxlength" resource="true" />
        <var>
          <var-name>maxlength</var-name>
          <var-value>10</var-value>
        </var>
      </field>
------------------------------------------------------------------------------
这样我们也能达到同样的效果。Right? 但是谁愿意呢? 只是我这样写似乎更加容易理解吧.并且这样做就失去了validation的某些特别的功效,你得为每个重新在资源文件里写一条message,不值得。

2. validation.xml 中的msg属性.
官方资料:[The default error message for a pluggable validator can be overriden with the msg element. So instead of using the msg attribute for the mask validator to generate the error message the msg attribute from the field will be used if the name of the field's name attribute matches the validator's name attribute.]后面的例子我也就没有给出来,那么这句话到底在肌理哇啦个什么呢? 先看一小段代码:
------------------------------------------------------------------------------------------------
<field property="username" depends="maxlength">
    <arg0 name="maxlength" key="${var:maxlength}" resource="false" />
    <var>
     <var-name>maxlength</var-name>
     <var-value>10</var-value>
    </var>
   </field>
------------------------------------------------------------------------------------------------
再强调一遍:validation的错误信息是这样组装的:通过arg0 - arg3等来和资源文件里面的并且消息名字在validator-rule.xml定义好的规则所对应的消息来合成的。validator-rule.xml所定义的msg是面向所有的该规则的错误消息,每个form field可以通过arg0-arg3来定制自己的消息(这个我提到过)

如果我们加入msg消息到filed标签下面:

------------------------------------------------------------------------------------------------
<field property="username" depends="maxlength">
    <msg name="maxlength" key="msg.maxlength" />
    <arg0 name="maxlength" key="${var:maxlength}" resource="false" />
    <var>
     <var-name>maxlength</var-name>
     <var-value>10</var-value>
    </var>
   </field>
------------------------------------------------------------------------------------------------
那么此时的maxlength在规则里面的msg将会被<field>里面的msg覆盖,也就是说<arg0>的定义形同虚设,更会无视resourse属性的false or true;

3.几个规则(rules)作用于同一个form的属性上面
------------------------------------------------------------------------------------------------
<field property="username" depends="required,maxlength,minlength">
    <arg0 name="maxlength" key="${var:maxlength}" resource="false" />
    <arg1 name="required" key="prompt.username" />
    <arg2 name="minlength" key="${var:minlength}" resource="false" />
    <var>
     <var-name>maxlength</var-name>
     <var-value>10</var-value>
    </var>
    <var>
     <var-name>minlength</var-name>
     <var-value>3</var-value>
    </var>
   </field>
------------------------------------------------------------------------------------------------
如果很多约束针对某一个form的属性,我们可以这样写,当然如果你非要分开写也可以。那么在xml文件中一个form的field就有多条记录.
这里有一点需要注意一下:<arg0><arg1><arg2>在这里定义了以后,别的form的属性也要按照这种顺序来,也就是:<arg0>对应的是 maxlength. <arg1>对应的是minlength.<arg2>对应的是 requried.为什么这样做?
因为在我们的properties文件中是写死的。如果不这样做,那么就会出现得到null值的错误啦.
------------------------------------------------------------------------------------------------
errors.required ={1} is required.
errors.maxlength = The length of the password can not surpass {0}
errors.minlength = The length of the password can not shorter than {2}
------------------------------------------------------------------------------------------------


补充一下validwhen的用法

<field property="emailAddress" depends="validwhen">

<arg0 key="userinfo.emailAddress.label"/>

<var>

<var-name>test</var-name>

<var-value>((sendNewsletter == null) or (*this* != null))</var-value>

</var>

</field>

上面定义的意思是:如果通讯地址是空或不空时这个字段时有效的

内容概要:《2024年中国城市低空经济发展指数报告》由36氪研究院发布,指出低空经济作为新质生产力的代表,已成为中国经济新的增长点。报告从发展环境、资金投入、创新能力、基础支撑和发展成效五个维度构建了综合指数评价体系,评估了全国重点城市的低空经济发展状况。北京和深圳在总指数中名列前茅,分别以91.26和84.53的得分领先,展现出强大的资金投入、创新能力和基础支撑。低空经济主要涉及无人机、eVTOL(电动垂直起降飞行器)和直升机等产品,广泛应用于农业、物流、交通、应急救援等领域。政策支持、市场需求和技术进步共同推动了低空经济的快速发展,预计到2026年市场规模将突破万亿元。 适用人群:对低空经济发展感兴趣的政策制定者、投资者、企业和研究人员。 使用场景及目标:①了解低空经济的定义、分类和发展驱动力;②掌握低空经济的主要应用场景和市场规模预测;③评估各城市在低空经济发展中的表现和潜力;④为政策制定、投资决策和企业发展提供参考依据。 其他说明:报告强调了政策监管、产业生态建设和区域融合错位的重要性,提出了加强法律法规建设、人才储备和基础设施建设等建议。低空经济正加速向网络化、智能化、规模化和集聚化方向发展,各地应找准自身比较优势,实现差异化发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值