struts自定义验证规则
2016-06-30 10:43
726 查看
1、Struts实现验证的过程
通过对Struts源代码的学习,总结一下Struts如何实现验证。
在struts-default.xml文件中,有validator和workflow两个拦截器。
概括地来说,validation拦截器是做验证,而workflow拦截器是利用validator的验证规则来决定该怎么做:如果存在错误,则返回Action.INPUT,如果不返回错误,则继续执行ActionInvocation的invoke方法。
接下来,我们来仔细的探讨一下validation拦截器,它对应的类是org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor。
AnnotationValidatorInterceptor类继承自ValidationInterceptor类
ValidatorInterceptor类继承自MethodFilterInterceptor类
在它的类的注释中有这样的话:This interceptor runs the action through the standard validation framework, which in turn checks the action against any
validation rules (found in files such as ActionClass-validation.xml) and adds field-level and action-level error messages (provided that the action implements com.opensymphony.xwork2.ValidationAware).
也就是说,如果ValidatorInterceptor类作为拦截器的时候,它会让standard validation framework check the action any validation rules,当然这些validation rules包括在ActionClass-validation中做的验证规则。
在上面,我们总结这样的结论:
如果ValidatorInterceptor类作为拦截器的时候,它会让standard validation framework check the action any validation rules,当然这些validation rules包括在ActionClass-validation中做的验证规则。
而AnnotationValidatorInterceptor类继承自ValidationInterceptor类,因此当java培训机构中的AnnotationValidatorInterceptor类注册为拦截器的时候,也会检验这些validation rules。
在这里要区分两个概念:验证拦截器和验证器。验证拦截器(ValidatorInterceptor),本质上就是拦截器,它的功能是:拦截住request请求,然后调用验证器(Validator)进行验证。
2、自定义验证规则
2.1、自定义验证规则的步骤
自定义验证规则,包括3个步骤:
(1)自定义验证程序必须实现 Validator 接口
Validator 接口有一个方法:
void validate(java.lang.Object object)
需要开发者进行覆盖。
另外ValidatorSupport 、 FieldValidatorSupport 实现了 Validator 接口
若需要普通的验证程序, 可以继承 ValidatorSupport 类
若需要field验证程序, 可以继承 FieldValidatorSupport 类
(2)注册
在类路径(src)下的 validators.xml 文件里注册
(3)应用
在Action的校验文件(Action类名-validation.xml)中添加校验器
Validator接口的源代码定义如下:
2.2、示例
a)自定义规则类
PositiveNumberValidator.java
b)在src下的validators.xml下注册该规则
c)使用校验规则
建立StudentAction.java,并在该StudentAction.java同一包下建立StudentAction-validation.xml文件中
StudentAction.java
StudentAction-validation.xml
通过对Struts源代码的学习,总结一下Struts如何实现验证。
在struts-default.xml文件中,有validator和workflow两个拦截器。
接下来,我们来仔细的探讨一下validation拦截器,它对应的类是org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor。
AnnotationValidatorInterceptor类继承自ValidationInterceptor类
在它的类的注释中有这样的话:This interceptor runs the action through the standard validation framework, which in turn checks the action against any
validation rules (found in files such as ActionClass-validation.xml) and adds field-level and action-level error messages (provided that the action implements com.opensymphony.xwork2.ValidationAware).
也就是说,如果ValidatorInterceptor类作为拦截器的时候,它会让standard validation framework check the action any validation rules,当然这些validation rules包括在ActionClass-validation中做的验证规则。
如果ValidatorInterceptor类作为拦截器的时候,它会让standard validation framework check the action any validation rules,当然这些validation rules包括在ActionClass-validation中做的验证规则。
而AnnotationValidatorInterceptor类继承自ValidationInterceptor类,因此当java培训机构中的AnnotationValidatorInterceptor类注册为拦截器的时候,也会检验这些validation rules。
在这里要区分两个概念:验证拦截器和验证器。验证拦截器(ValidatorInterceptor),本质上就是拦截器,它的功能是:拦截住request请求,然后调用验证器(Validator)进行验证。
2、自定义验证规则
2.1、自定义验证规则的步骤
自定义验证规则,包括3个步骤:
(1)自定义验证程序必须实现 Validator 接口
Validator 接口有一个方法:
void validate(java.lang.Object object)
需要开发者进行覆盖。
另外ValidatorSupport 、 FieldValidatorSupport 实现了 Validator 接口
若需要普通的验证程序, 可以继承 ValidatorSupport 类
若需要field验证程序, 可以继承 FieldValidatorSupport 类
(2)注册
在类路径(src)下的 validators.xml 文件里注册
(3)应用
在Action的校验文件(Action类名-validation.xml)中添加校验器
Validator接口的源代码定义如下:
a)自定义规则类
PositiveNumberValidator.java
建立StudentAction.java,并在该StudentAction.java同一包下建立StudentAction-validation.xml文件中
StudentAction.java
相关文章推荐
- spring使用模板发送邮件
- 深入理解Java:注解(Annotation)--注解处理器
- 使用JDK开发WebService
- 华为机试---二维数组打印
- 基于SpringAop 的统一验证
- Spring 定时任务
- 深入理解Java:注解(Annotation)基本概念
- JAVA volatile关键字解析
- token
- java中的代码块
- java 计算String的ASCII码
- 各种 Java Thread State 第一分析法则
- 深入理解Java:注解(Annotation)自定义注解入门
- Java实现KMP算法
- Reason: Failed while changing version of java to 1.7
- 二叉树的非递归遍历的解析与实现----java实现
- 常见类的基本使用
- Java编程中“为了性能”尽量要做到的一些地方
- springmvc.xml
- java基础01