1. struts2 中验证框架是使用原理
ActionSupport 实现了Validateable 和 ValidationAware 接口。由workflow 拦截器按顺序调用。
Validateable :validate()方法进行校验
ValidationAware :保存错误信息
workflow :判断是否出错(即是否含有错误信息),若果出错将页面导向input页面
2. 具体流程如下
在下图中,可以看出。
当页面接收到请求时,
1)会将 request params 与 请求的action中声明的属性类型进行匹配,
若类型转换失败,会使用ValidationAware将错误信息保存起来。
若匹配成功,将request params 放入valuestack中.
2)检测请求的action的方法是否需要校验。
- action类中是否含有validate()方法。
若含有,需要判断目前请求的method是否有@SkipValidation注解,或者在struts.xml文件中的拦截器中有设置validation.excludeMethods,若有则表示需要跳过验证,若没有,则表示需要验证
- action类中是否含有validateToXXXX()方法.
需要看validateToXXXX 方法中的XXXX 与目前请求的Action Method是否相同。相同则表示需要进行验证
- 在Action的同级目录下检测是否含有XXX-validation.xml
XXX 可以是Action的类