[原创]java WEB学习笔记71:Struts2 学习之路-- struts2常见的内建验证程序及注意点,短路验证,非字段验证,错误消息的重用
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用
内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。
本人互联网技术爱好者,互联网技术发烧友
微博:伊直都在0221
QQ:951226918
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.Struts2 内建的验证程序:参考文档 ../struts-2.3.15.3-all/struts-2.3.15.3/docs/WW/docs/conversion-validator.html
字段验证用:<s:fielderror fieldName=""></s:fielderror> 显示错误消息
1 <validators>
2 <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
3 <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
4 <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
5 <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
6 <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
7 <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
8 <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
9 <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
10 <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
11 <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
12 <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
13 <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
14 <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
15 <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
16 <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
17 <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
18 </validators>
1)required: 确保某给定字段的值不是空值 null “”
2)requiredstring: 确保某给定字段的值既不是空值 null, 也不是空白.
trim 参数. 默认为 true, 表示 struts 在验证该字段值之前先剔除前后空格.
3)stringlength: 验证一个非空的字段值是不是有足够的长度.
minLength: 相关字段的最小长度. 若没有给出这个参数, 该字段将没有最小长度限制
maxLength:相关字段的最大长度. 若没有给出这个参数, 该字段将没有最大长度限制
trim: 在验证之前是否去除前后空格
4)date: 确保某给定日期字段的值落在一个给定的范围内
max:相关字段的最大值. 若没给出这个参数, 该字段将没有最大值限制
min:相关字段的最小值. 若没给出这个参数, 该字段将没有最小值限制
5) email: 检查给定 String 值是否是一个合法的 email
6) url: 检查给定 String 值是否是一个合法的 url
7) regex: 检查某给定字段的值是否与一个给定的正则表达式模式相匹配.
expresssion*: 用来匹配的正则表达式
caseSensitive: 是否区分字母的大小写. 默认为 true
trim: 是否去除前后空格. 默认为 true
8)int: 检查给定整数字段值是否在某一个范围内
min: 相关字段的最小值. 若没给出这个参数, 该字段将没有最小值限制
max: 相关字段的最大值. 若没给出这个参数, 该字段将没有最大值限制
9) conversion: 检查对给定 Action 属性进行的类型转换是否会导致一个转换错误. 该验证程序还可以在默认的类型转换消息的基础上添加一条自定义的消息
10)expression 和 fieldexpression: 用来验证给定字段是否满足一个 OGNL 表达式.
前者是一个非字段验证程序, 后者是一个字段验证程序.
前者在验证失败时将生成一个 action 错误, 而后者在验证失败时会生成一个字段错误
expression*: 用来进行验证的 OGNL 表达式
2.短路验证
1) <validator …/> 元素和 <field-validator …/> 元素可以指定一个可选的 short-circuit 属性,该属性指定该验证器是否是短验证器,默认值为 false。
2) 对同一个字段内的多个验证器,如果一个短路验证器验证失败,其他验证器不会继续校验。
1 <!DOCTYPE validators PUBLIC
2 "-//Apache Struts//XWork Validator 1.0.2//EN"
3 "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
4
5 <validators>
6
7 <!-- 针对于 age 属性进行验证 。基于字段的验证-->
8 <field name="age">
9
10 <!-- 设置短路验证,若当前的验证没有通过,则不再进行下面的验证 -->
11 <field-validator type="conversion" short-circuit="true">
12 <message>Conversion Error Occurred</message>
13 </field-validator>
14 <field-validator type="int">
15 <param name="min">20</param>
16 <param name="max">50</param>
17 <message>Age needs to be between ${min} and ${max}</message>
18 </field-validator>
19 </field>
20 </validators>
3.非字段验证:不针对某一个字段的验证
1 <validator type="expression">
2 <param name="expression"><![CDATA[password==password2]]></param>
3 <message>password is not equals to password2</message>
4 </validator>
显示非字段验证的错误消息,使用s:actionerror 标签:
4.错误消息的重用:不同字段使用同样的验证规则,而且使用同样的响应消息。
在国际化文件中
error.int=${getTest(fieldName)} needs to be ${min} and ${max}
age=\u5E74\u9F84
count=\u6570\u91CF
5.自定义验证器
1) 自定义验证器必须实现 Validator 接口
2) ValidatorSupport 和 FieldValidatorSupport 实现了 Validator 接口
- 若需要普通的验证程序, 可以继承 ValidatorSupport 类
- 若需要字段验证程序, 可以继承 FieldValidatorSupport 类
- 若验证程序需要接受一个输入参数, 需要为这个参数增加一个相应的属性
3)注册验证程序: 自定义验证器需要在类路径里的某个 validators.xml 文件里注册:
验证框架首先在根目录下找validators.xml文件,没找到validators.xml文件, 验证框架将调用默认的验证设置,即default.xml里面的配置信息.