struts2使用XML框架进行输入校验:
1、取名规则:校验的class文件名-validationv.xml【全局校验】
eg:校验PointAction类 取名为PointAction-validationv.xml
2、如何编写该xml文件:
请查看validators.xml[struts目录下的apps文件夹下的范例中] 截取其头部的xml定义
<validators>根元素 里面包含<field|validator>+
field元素下包含 <field-validator>+
field-validator 元素下包含 <param*,message>
<validator> 元素下包含<field-validator>
field-validator 元素下包含 <param*,message>
示范:
----------------------------------------------------------------------------------------------------------------------------
头部的xml定义
<!--第一种实现方式:field-字段校验方式-->
<validators>
<field name="age">
<!--field-validator可以有多个,每一个代表一种校验方式-->
<field-validator type="int">
<param name="trim">true</param>
<message>age should be a Iterger</message>
</field-validator>
<field-validator type="stringlength">
<param name="minlength">6</param>
<param name="maxlength">12</param>
<message>age should be between ${minlength}and ${maxlength}</message>
</field-validator>
</field>
</validators>
--------------------------------------------------------------------------------------------------------------------------
<!--第二种实现方式validator 非字段校验方式-->
<validators>
<!--validator可以有多个,每一个代表一种校验方式 ! param name=“fieldName” 固定不变-->
<validator type="int">
<param name="fieldName">age</param>
<message>age should be a Iterger</message>
</validator>
<field-validator type="stringlength">
<param name="fieldName">age</param>
<param name="minlength">6</param>
<param name="maxlength">12</param>
<message>age should be between ${minlength}and ${maxlength}</message>
</fvalidator>
</validators>
------------------------------------------------------------------------------------------------------------------------
局部校验方式:如上篇所述,如在<action name="Register" class="com.xx.xx.PointAction" method="aaa">
指定了method的属性值时,我们可以采用编写名为PointAction-aaa-validation.xml
注意:执行时如果有PointAction-aaa-validation.xml 和PointAction-validation.xml两个文件,先执行PointAction-validation.xml文件,紧接着执行PointAction-aaa-validation.xml !
补充点:
当验证信息不是很复杂的情况下,建议使用xml框架方式;
真正存放field级别错误信息对象的是linkedHashMap;
该linkedHashMap的key值是string类型,而value值是arraylist类型的;
真正存放error级别错误信息对象的是arraylist;