本文共 2642 字,大约阅读时间需要 8 分钟。
对于非字段校验器配置风格,这是一种以校验器优先的配置方式。在这种配置方式下,校验规则文件的根元素下包含了多个<validator .../>元素,每个<validator .../>元素定义了一个校验规则。
对于采用非字段校验器配置风格的校验规则文件,<validators .../>元素下有多个<validator .../>元素,每个<validators .../>元素都有如下格式:
<validator type="校验器名">
<param name="fieldName">需要被校验的字段</param>
<!-- 此处需要为不同校验器指定数量不等的校验参数 -->
<param name="参数名">参数值</param>
...
<!-- 校验失败后的提示信息,其中key指定国际化信息的key -->
<message key="I18Nkey">校验失败后的提示信息</message>
</validator >
每个<validator .../>元素定义了一个校验规则,该元素需要一个type属性,该type属性指定了该校验器的名字。
使用非字段校验器的配置风格时,采用的是校验器优先的方式,故必须为<validator .../>配置一个fieldName参数,该参数的值就是被校验的Action属性名。除此之外,还需要指定数量不等的<param .../>元素,这些都是指定校验器所需的参数。
下面采用非字段校验器风格改写前面的校验规则文件。
程序清单:codes\04\4.2\nonField\WEB-INF\src\org\crazyit\app\action\RegistAction-validation.xml
<?xml version="1.0" encoding="GBK"?>
<!-- 指定Struts 2数据校验的规则文件的DTD信息 -->
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.3//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<!-- Struts 2校验文件的根元素 -->
<validators>
<!-- 配置指定必填字符串的校验器 -->
<validator type="requiredstring">
<!-- 使用该校验器校验name属性 -->
<param name="fieldName">name</param>
<param name="trim">true</param>
<!-- 指定校验失败后输出name.required对应的国际化信息 -->
<message key="name.requried"/>
</validator>
<!-- 配置指定正则表达式的校验器 -->
<validator type="regex">
<!-- 使用该校验器校验name属性 -->
<param name="fieldName">name</param>
<param name="trim">true</param>
<param name="expression"><![CDATA[(\w{4,25})]]></param>
<!-- 指定校验失败后输出name.required对应的国际化信息 -->
<message key="name.regex"/>
</validator>
<!-- 配置指定必填字符串的校验器 -->
<validator type="requiredstring">
<!-- 使用该校验器校验pass属性 -->
<param name="fieldName">pass</param>
<param name="trim">true</param>
<!-- 指定校验失败后输出pass.required对应的国际化信息 -->
<message key="pass.requried"/>
</validator>
<!-- 配置指定正则表达式的校验器 -->
<validator type="regex">
<!-- 使用该校验器校验pass属性 -->
<param name="fieldName">pass</param>
<param name="trim">true</param>
<param name="expression"><![CDATA[(\w{4,25})]]></param>
<!-- 指定校验失败后输出pass.required对应的国际化信息 -->
<message key="pass.regex"/>
</validator>
<!-- 配置指定整数校验器 -->
<validator type="int">
<!-- 使用该校验器校验age属性 -->
<param name="fieldName">age</param>
<!-- 指定整数校验器的范围-->
<param name="min">1</param>
<param name="max">150</param>
<!-- 指定校验失败后输出age.range对应的国际化信息 -->
<message key="age.range"/>
</validator>
<!-- 配置指定日期校验器 -->
<validator type="date">
<!-- 使用该校验器校验birth属性 -->
<param name="fieldName">birth</param>
<!-- 指定日期校验器的范围-->
<param name="min">1900-01-01</param>
<param name="max">2050-02-21</param>
<!-- 指定校验失败后输出birth.range对应的国际化信息 -->
<message key="birth.range"/>
</validator>
</validators>
这份文件与前面的校验规则文件的效果完全一样,所以开发者可以自由选择配置风格。但值得指出的是,并不是所有的校验器都支持两种配置风格。关于各校验器的具体用法后面会有更详细的介绍。
转载地址:http://fxhgl.baihongyu.com/