struts2编写自定义的验证程序

来源:互联网 发布:软件集成测试模板 编辑:程序博客网 时间:2024/06/01 09:57

即使你对Struts内建验证程序的内部情况一无所知,也不影响你使用它们。可如果你想编写你自己的验证程序,就必须对用来实现Struts验证程序的各个类和它们的注册机制有一定的了解。

验证程序必须实现Validator接口,它是com.opensymphony.xwork2.validator包的一部分。图8-15给出了这个接口、它的子接口和实现类。

我在图8-15里省略了包的名字。Validator、FieldValidator和ShortCircuitable- Validator接口属于com.opensymphony.xwork2.validator包,其他的组件属于com.opensymphony. xwork2.validator.validators包。Validator接口的定义见代码清单8-39。

 

 (点击查看大图)图8-15  Validator接口和支持类型

代码清单8-39  Validator接口

 

alidation拦截器负责加载和执行各种验证程序。在加载了一个验证程序之后,这个拦截器将调用那个验证程序的setValidatorContext方法,并把当前的ValidatorContext对象传递给它,这使我们可以访问当前动作。接下来,Validation拦截器将调用validate方法并把需要验证的对象传递给它。validate方法是你在编写一个自定义的验证程序时需要覆盖的方法。

对便捷类ValidatorSupport或FieldValidatorSupport进行扩展要比自行实现Validator接口容易得多。如果你想创建一个普通的验证程序(非字段验证程序),请扩展ValidatorSupport类。如果你想编写一个字段验证程序,请扩展FieldValidatorSupport类。如果你设计的验证程序能够接受一个输入参数,你还需要为这个参数增加一个相应的属性。例如,如果你的验证程序允许一个minValue参数,你还需要增加一个名为minValue的属性,并为它编写getter方法和setter方法。

ValidatorSupport类增加了几个方法,下面3个是便捷方法,你可以从验证程序类里调用它们。

 

 

 

返回object对象的name字段的值。

 

 

 

增加一个动作错误。

 

 

 

增加一个字段错误。

如果你编写的是一个非字段验证程序,在验证失败时需要从validate方法调用addActionError方法;如果你编写的是一个字段验证程序,在验证失败时需要从validate方法调用addFieldError方法。

FieldValidatorSupport类扩展了ValidatorSupport类并新增了propertyType和fieldName两个属性。

代码清单8-40给出了RequiredStringValidator类的源代码,requiredstring验证程序就是用这个底层类实现的。

代码清单8-40  RequiredStringValidator类

 

 

 

requiredstring验证程序可以接受一个trim参数,所以RequiredStringValidator类需要有一个相应的trim属性。如果有一个trim参数被传递给这个验证程序,Validation拦截器就会调用trim属性的setter方法。

validate方法负责具体进行有关的验证。如果验证失败,这个方法必须调用addFieldError方法。

 

  • 大小: 43.3 KB
  • 大小: 27.2 KB
  • 大小: 7.8 KB
  • 大小: 4.7 KB
  • 大小: 5.3 KB
  • 大小: 37.6 KB
  • 查看图片附件