一、短路验证
validation.xml中添加 conversion类型转换错误验证,当在Age文本框输入非int型参数后,后台会返回包含范围、转换错误的多条消息。
<validators>
<!-- 基于字段的验证 -->
<field name="age">
<!-- 发生类型转换错误时的验证 -->
<validator type="conversion" short-circuit="false">
<message>Conversion Error Occurred</message>
</validator>
<field-validator type="int">
<param name="min">20</param>
<param name="max">50</param>
<message key="error.int">Age needs to be between ${min}and ${max}</message>
</field-validator>
</field>
</validators>
为了保证页面每次只得到一条,可以在 validator 节点设置短路验证
<!-- 发生类型转换错误时的验证 -->
<validator type="conversion" short-circuit="true">
这样,当发生类型转换错误时就会返回,而不进行下面的验证。
二、非字段验证
验证页面上两次密码输入是否相等时,使用非字段验证。错误信息会包含在值栈key为actionError内。
<!-- 非字段验证 -->
<validator type="expression">
<param name="expression"> <![CDATA[password==password2]]> </param>
<message>Password is not equals to password2 .... </message>
</validator>
三、相同验证规则使用同一条相应消息
对 age和count验证,在页面上使用同样的相应消息。 message属性中用key指定了国际化内容
<validators>
<!-- 基于字段的验证 -->
<field name="age">
<field-validator type="int">
<param name="min">10</param>
<param name="max">40</param>
<message key="error.int">Age needs to be between ${min}and ${max}</message>
</field-validator>
</field>
<field name="count">
<field-validator type="int">
<param name="min">1</param>
<param name="max">10</param>
<message key="error.int">Count needs to be between ${min}and ${max}</message>
</field-validator>
</field>
</validators>
在国际化文件中,执行fieldName就是对应的字段名称,然后再把age和count单独赋值为“年龄” “数量”。这样在页面就可以共用一句相应并且字段名称可国际化
error.int=~${getText(fieldName)} needs to be between ${min}and ${max}
age=\u5E74\u9F84
count=\u6570\u91CF