39-41.Struts2_短路验证&非字段验证&相同的验证规则使用同一条响应消息&自定义验证器

来源:互联网 发布:网络摄影机app 编辑:程序博客网 时间:2024/06/08 15:24

主要笔记

7). 关于非字段验证: 不是针对于某一个字段的验证.

<validator type="expression">    <param name="expression"><![CDATA[password==password2]]></param>    <message>Password is not equals to password2</message></validator>      显示非字段验证的错误消息, 使用 s:actionerror 标签:  <s:actionerror/>

8). 不同的字段使用同样的验证规则, 而且使用同样的响应消息 ?

error.int=getText(fieldName)needstobebetween{min} and ${max}

age=\u5E74\u9F84
count=\u6570\u91CF

详细分析参见 PPT 159.

9). 自定义验证器:

I. 定义一个验证器的类

> 自定义的验证器都需要实现 Validator. > 可以选择继承 ValidatorSupport 或 FieldValidatorSupport 类> 若希望实现一个一般的验证器, 则可以继承 ValidatorSupport> 若希望实现一个字段验证器, 则可以继承 FieldValidatorSupport> 具体实现可以参考目前已经有的验证器. > 若验证程序需要接受一个输入参数, 需要为这个参数增加一个相应的属性

II. 在配置文件中配置验证器

> 默认情况下下, Struts2 会在 类路径的根目录下加载 validators.xml 文件. 在该文件中加载验证器.     该文件的定义方式同默认的验证器的那个配置文件: 位于 com.opensymphony.xwork2.validator.validators 下的 default.xml> 若类路径下没有指定的验证器, 则从 com.opensymphony.xwork2.validator.validators 下的 default.xml 中的验证器加载     

III. 使用: 和目前的验证器一样.

IV. 示例代码: 自定义一个 18 位身份证验证器

validators.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE validators PUBLIC        "-//Apache Struts//XWork Validator Definition 1.0//EN"        "http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd"><!-- START SNIPPET: validators-default --><validators>    <validator name="idcard" class="com.hgh.struts2.validator.IDCardValidator"/></validators>

i18n.properties

error.int=i18n ${fieldName} needs to be between ${min} and ${max}

TestValidatorAction-testvalidator-validation.xml

<!DOCTYPE validators PUBLIC        "-//Apache Struts//XWork Validator 1.0.2//EN"        "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"><validators> <field name="age">        <!-- 设置短路验证: 若当前验证没有通过, 则不再进行下面的验证        <validator  …/> 元素和 <field-validator  …/> 元素可以指定一个可选的 short-circuit 属性,该属性指定该验证器是否是短验证器,默认值为 false。对同一个字段内的多个验证器,如果一个短路验证器验证失败,其他验证器不会继续校验         -->        <field-validator type="conversion" short-circuit="true">            <message>^Conversion Error Occurred</message>        </field-validator>         <field-validator type="int">             <param name="min">20</param>             <param name="max">50</param>             <!--              <message>Age needs to be between ${min} and ${max}</message>error.int             <message key="error.int"></message>              -->            <message key="error.int"></message>         </field-validator>     </field>     <field name="count">        <field-validator type="int">            <param name="min">20</param>            <param name="max">50</param>            <message key="error.int"></message>        </field-validator>     </field>     <!--      关于非字段验证: 不是针对于某一个字段的验证.expression       -->      <validator type="expression">        <param name="expression"><![CDATA[passWord1==passWord2]]></param>         <message>Password is not equals to password2</message>      </validator>      <!-- 使用自定义的验证器 -->      <field name="idCard">            <field-validator type="idcard">                <message>不合法的身份证</message>            </field-validator>      </field></validators>
阅读全文
0 0
原创粉丝点击