6.Struts2的输入校验

1.第三方js库Validation.js
2.ActionName_validation.xml配置域校验信息。
3.数据转换失败和输入校验失败信息都在FieldError中。
4.***_validation.xml中实施的提示信息可以被国际化。
<message>${getText(***)}</message>
5.客户端校验
#<s:head/>
#<s:form ... validate="true">
#<s:textfield label="***" name="***">
6.客户端校验仅仅支持:
required
requiredstring
stringlength
regex
email
url
int
double
7.短路校验器
对于同一个域下面的多个校验器,一个short-circuit = "true"的校验器失败,不会再执行其他的校验器。
目前客户端校验不支持 短路特性。
8.校验顺序
非字段风格校验器 优先于 字段风格的校验器
所有非字段风格校验器 排在前面的 会先执行
所有字段风格校验器 排在前面的 会先执行。

+短路顺序较复杂。
9.如果需要的校验规则复杂,有两个选择:
自己开发校验器
重写Validate方法。

10.逻辑Action的校验文件
ActionClassName_ActionAliasName_validation.xml
这个逻辑Action的校验规则是 原来的校验规则+这个文件的总和

11.校验规则顺序
BaseAction_validation.xml
BaseAction_AliasAction_validation.xml
SubAction_validation.xml
SubAction_AliasAction_validation.xml
后面的Action是前面规则的总和。如果冲突,依据后面。

12.内建校验器
12.1 注册校验器
系统默认校验器在xwork_*.jar注册文件为:default.xml
如果自己注册校验器,WEB-INF/classes下面填写:validators.xml,将default.xml内容复制进来。
12.2 特殊校验器介绍
visitor 复合属性如 User
conversion ?

13 基于annotation的校验
@Validation()修饰类
setter方法前使用@***Validator()

14 重写Validate方法
对于有多个逻辑Action的情况,可以填写Validate***()
addErrorField('user','***')

15 数据校验流程
15.1 类型转换
15.2 如果错误的话,将异常信息保存在actionContext中,conversionError拦截器将其封装到FieldError中。然后进入15.3,如果没有错误直接进入15.3.
15.3 进行输入校验,根据***validator.xml进行输入校验。
15.4 通过反射调用validate***()进行数据校验
15.5 调用validate()进行数据校验
15.6 如果FieldError中存在内容,则进入input对应的视图资源。如果FieldError中没有值,进入对应的Action方法进行执行。

你可能感兴趣的:(xml,Web)