使用struts2.0, 在用到struts2.0中的validation框架时,当为一个Action指定Actionname-validation.xml验证规则 后,validation interceptor会为该Action中的每个方法都执行validation,很郁闷,找了好多资料,终于找到了解决的方法。。
(1)有一种解决方法是为其余不需要进行验证的方法加上annotation,即在方法前加上@SkipValidation。
(2)另一种方法是为Action中的指定方法指定一个验证规则,命名为Actionname-alias-validation.xml。
如mailreader的例子中,struts中的配置如下:
xml 代码
然后在mailreader2包下有一个Subscription类,及一个Subscription-Subscription_save-validation.xml 文件,还有一个Subscription-validation.xml 文件。
注意:Subscription_save是在struts 中定义的action的name,在struts中还要指定Subscription_save所对应的方法。
(3)还有一种方法,也是最简单的方法就是如下配置:
xml 代码
- < package name = "subscription" namespace = "/" extends = "mailreader-support" >
- < global-results >
- < result name = "input" > /Subscription.jspresult >
- < result type = "redirect-action" > Registration_inputresult >
- < global-results >
- < action name = "Subscription" class = "mailreader2.Subscription" >
- < interceptor-ref name = "defaultStack" >
- < param name = "validation.excludeMethods" > * param >
- < param name = "validation.includeMethods" > 需要验证的方法名称,以逗号分隔 param >
- interceptor-ref >
- < action >
- < package >