5、框架验证,基于XML格式的验证
验证哪个action,就建立一个RegisterAction-validation.xml文件,在xml中引用
Field字段校验 validator非字段校验
RegisterAction-test-validation.xml对action里面的test()发放进行校验,但是仍会对RegisterAction-validation.xml进行全局校验,(建议不要使用全局的校验,对每个方法进行一个局部校验)
Field字段校验
<!DOCTYPE validators PUBLIC"-//OpenSymphony Group//XWork Validator 1.0.2//EN""http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">文件
<validators>
<!-- 一个filed表示对一个属性进行校验 -->
<field name ="username">
<!-- 一个field-validator表示对一个属性进行某种type方式的校验,查询 -->
<!-- requiredstring表示必填 -->
<field-validator type="requiredstring">
<!-- trim表示将字符串两边的空格全部忽略 -->
<param name="trim">true</param>
<!-- message表示校验失败时,给用户的信息 -->
<message>username should not be blank</message>
</field-validator>
<!-- stringLength表示验证输入长度 -->
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>username should be between ${minLength} and&{maxLength}</message>
</field-validator>
</field>
<field name="age">
<field-validator type="required">
<message>age should not be blank!</message>
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>age should be between ${min} and ${max}</message>
</field-validator>
</field>
<field name="birthday">
<field-validator type="required">
<message>birthday should not be blank!</message>
</field-validator>
<field-validator type="date">
<param name="min">2001-01-01</param>
<param name="max">2003-12-31</param>
<message>birthday should be between ${min} and ${max}</message>
</field-validator>
</field>
</validators>
<s:fielderror cssStyle="color:red" />必须使用fielderror在jsp页面中
Requiredstring表示对字符串不能为空进行校验
当不是字符串的时候要用required进行空校验
重写public void validate() 和框架校验最好只写一个,避免对某个表单重复校验
非字段校验
<validatortype="requiredstring">
<paramname="fieldName">username</param>
<message>username should not beblank!</message>
</validator>
<validatortype="stringlength">
<param name="fieldName">username</param>
<paramname="minLength">6</param>
<paramname="maxLength">10</param>
<message>username should bebetween ${minLength} and ${maxLength}</message>
</validator>
相对来说字段校验更加直观方便,最好不要混合使用,但是可以同时并存
1、真正存放field级别信息的对象是LinkedHashMap
2、该linkedhashmap的key是String类型的,value是ArrayList类型的
3、对于action级别的错误信息都是放在arraylist中