您的位置:首页 > 编程语言 > Java开发

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

2017-05-16 21:43 351 查看
主要笔记

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  验证器
相关文章推荐