Struts 中validator.xml 配置

来源:互联网 发布:西北师大知行学院怎走 编辑:程序博客网 时间:2024/06/07 02:47

关于validation.xml

在validator.xml中使用了validation-rules.xml的验证规则
注意一定要加其已经定义好的出错消息考到你的资源包里去,否则出错的时候,显示错误对话框
里面却什么错误消息都没有,不允许发生这样的错误

---------------------------------------------------------------------------------
<arg>:一共可定义4个(arg0..arg3),作用是向资源文件提供参数的值。属性同<msg>
<arg1 key="${var:min}" resource="false"/>
        <var>
          <var-name>min</var-name>
          <var-value>10</var-value>
        </var>
既是代替资源包中{1}的参数值
又是在验证规则中传进了参数
记住将resource="false"(当设为false时,key值可自定义)

---------------------------------------------------------------------------------
11月15日
Validator验证框架
validator.xml
在validator.xml 文件中定义formset 元素时,需要使用校验器和消息关键字,如清单12.3formset 元素
<!—① -->
<formset>
<!—②-->
<form name="logonForm">
<!—③,④ -->
<field
property="username"
depends="required,mask">
<!—⑤-->
<msg name key="logon.username.maskmsg"/>
<!—⑥-->
<arg0 key="logon.userName.displayName"/>
<!—⑦,⑧-->
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z0-9]*$</var-value>
</var>
</field>
<!—⑨ -->
<field property="password"
depends="required,minlength">
<arg0 key="logon.password.displayName"/>
<var>
<var-name>minlength</var-name>
<var-value>5</var-value>
</var>
</field>
</form>
<!-- ... -->
</formset>
○1 formset 是一个或者多个form的包装器.
○2 每个form 元素都要给定其自身的名称。这应该对应于Struts 配置中的form bean 名称或
者 action 的路径。
○3 每个form 元素有一些field 元素组成
○4 field 元素通过depends 属性指出要使用哪个校验器。
○5 可选的msg 元素允许你指定针对一个校验器的定制消息和用于替换参数的消息关键字
○6 arg0 元素指定了那些需要它们的消息所用的第一个替换参数
○7 var 元素用于传递变量属性到校验器中。
○8 这里传递了一个正则表达式到mask 校验器。表达式意思是用户名称只可以包含字母和
数字。.
○9 这里我们设置password 是必须的,并且至少有5个字符的长度。password 长度是一个业
务需求,帮助使用户账户更加安全。
password 校验消息使用了缺省 minlength or required 消息,该消息定义于
validation-rules.xml (errors.minlength and errors.required)。


<form>:指定要校验的ActionForm
属性 描述 name 指定要校验的ActionForm的名字  <field>:指定要校验ActionForm的哪一个属性
属性 描述 property 指定要校验的ActionForm中的属性名 depends 所用的校验规则,在validation-rules中定义 page ?当此属性的值小于或等于与此form相关的javabean的page值时,此field才会被处理 indexedListProperty ?The method name that will return an array or a Collection used to retrieve the list and then loop through the list, performing the validations for this field.   
 
<msg>:校验失败时加到Action Errors中的信息,用来替代validator-rules中默认的错误信息
属性 描述 name 使用校验的规则名 key 资源文件中的key或自定义的值 Resource 当设为false时,key值可自定义 
 
<arg>:一共可定义4个(arg0..arg3),作用是向资源文件提供参数的值。属性同<msg>

 


---------<msg>的重要作用---------------------------------------------------------
在某些情况下,您可能想提供一个更具体的错误消息而不是在资源束文件中定义的缺省错误消息。
例如,如果您有一个 Mask 验证器,缺省错误消息是,该值是无效的,而没有关于无效性的详细情况。
您可以用另一个消息覆盖 Mask 验证器的错误消息,
方式是将如下一行代码添加到 validator.xml 中:
  <msg name="mask" key="some.other.error.msg"/>。

将如下一行代码添加到文件 ApplicationResources.properties 中并保存:
some.other.error.msg = {0} is not a 5-digit number

如下编辑 validation.xml 并保存:

<form-validation>
   <formset>
    <form name="submitForm">
     <field property="name" depends="required,mask">
     <msg name="mask" key="some.other.error.msg"/> !!!!!在这里加上这么一句,替换mask的消息,
     !!!这里可以用多个<msg>来替换所有的原始消息,比如再加一个<msg>替换required
     <msg>的name属性必需来自上面的depends,因为它要替换其中验证规则的错误消息
     <arg0 key="submitForm.name"/>
         <var>
           <var-name>mask</var-name>
           <var-value>^//d{5}//d*$</var-value>
         </var>
     </field>
    </form>
   </formset>
</form-validation>

------一些验证规则的用法------------------------------------------------------------
你depends引用任何一个validator-rules.xml中的规则,它都对应一个默认的错误信息
如:xxx{0}xxxxx
如果你引用了很多个规则,则有以下错误信息
   xxx{0}xxx
   xxx{0}xxx{1}xxx{2}xxx...
则你需要<arg0 <arg1 <arg2
因为你验证的是一个页面的组件,则<arg0 一定是此组件的名字
为了实现国际化,此组件的名字可能在资源包中,如xx.xx
则从xx.xx中获得键的值,然后又赋给资源包中的{0}参数(就是<arg0>)

记住不论引用几种验证规则,{0}可以重复,它代表组件名,它以上的不能重复
   xxx{0}xxx        
   xxx{0}xxx{1}xxx            第二个验证规则
   xxx{0}xxx{1}xxx{2}xxx...   第三个验证规则
这样的情况应该是不存在的
因为如果写了第二个验证规则的<arg1
        <arg1 key="${var:minlength}" resource="false"/>
        <var>
          <var-name>minlength</var-name>
          <var-value>8</var-value>
        </var>
又写第三个验证规则的<arg1
同时出现两个<arg1
这怎么说也非常不适合逻辑


检查是不是字母的正则表达式:^[a-zA-Z]*$

验证minlength(输入的最小长度)
      <field property="userName" depends="required,minlength">
        <arg0 key="label.username"/>
        <arg1 key="${var:minlength}" resource="false"/>
        <var>
          <var-name>minlength</var-name>
          <var-value>8</var-value>
        </var>
      </field>
验证intRange(取值范围)
      <field property="age" depends="required,intRange">
        <arg0 key="label.age"/>
        <arg1 key="${var:min}" resource="false"/>
        <arg2 key="${var:max}" resource="false"/>
        <var>
          <var-name>min</var-name>
          <var-value>10</var-value>
        </var>
        <var>