struts2编写自定义的验证程序

即使你对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方法。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值