struts2--表单校验
[coolxing按: 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正.]
?
准备工作
1. 登陆页面的表单:
2. 定义校验规则:
用户名不能为null, ?或者空字符串;
密码不能为null或者空字符串, ?密码中只能包含[0-9a-zA-Z], ?不能存在非法字符, ?且长度在6-8位之间;
年龄必须为整型, ?且不能为负数.
采用基本验证的方式校验表单
1. 创建ValidateAction类, ?继承ActionSupport并实现Validateable接口.
?
表单校验的执行流程
1. 类型转换器对请求参数执行类型转换, 并把转换后的值赋给action中的属性.?
2. 如果在执行类型转换的过程中出现异常, 系统会将异常信息保存到ActionContext, conversionError拦截器将异常信息封装到fieldErrors里, 然后执行第3步. 如果类型转换没有出现异常, 则直接进入第3步.?
3. 系统通过反射技术调用action中的validateXxx()方法, Xxx为方法名.?
4. 调用action中的validate()方法.?
5. 经过上面4步, 如果系统中的fieldErrors存在错误信息(即存放错误信息的集合的size大于0), 系统自动将请求转发至名称为input的视图. 如果系统中的fieldErrors没有任何错误信息, 系统将执行action中的业务方法.?
?
基于XML配置方式实现输入校验
1. 创建Action类, 继承ActionSupport或实现Validateable接口:
3. 在ValidateXmlAction的同级目录中创建用于校验表单的xml文件, 文件名为ValidateXmlAction-validation.xml(用于校验表单的xml文件的文件名规定为ActionClassName-validation.xml):
4. 上述xml文件中使用名称为ageValidate的校验规则对age字段进行校验. ageValidate是一个自定义的校验规则.
自定义校验规则首先需要创建一个类, 继承FieldValidatorSupport类:
5. 默认情况下将对Action中的所有业务方法进行校验. 如果只想对Action中的某个业务方法进行校验, 可以将用于校验的xml文件命名为ActionClassName-ActionName_methodName-validation.xml. 本例中只对login()方法进行校验, 只需将ValidateXmlAction-validation.xml文件更名为ValidateXmlAction-validateXmlAction_login-validation.xml即可.?
?
?