关于Struts2中取消Validations对一些方法取消验证

使用struts2.0, 在用到struts2.0中的validation框架时,当为一个Action指定Actionname-validation.xml验证规则 后,validation interceptor会为该Action中的每个方法都执行validation,这样很烦。

(1)有一种解决方法是为其余不需要进行验证的方法加上annotation,即在方法前加上@SkipValidation。

(2)另一种方法是今天在mailing list中看到的,为Action中的指定方法指定一个验证规则,命名为Actionname-alias-validation.xml,在struts2.0自带的mailreader例子中有使用,可以参考。

如mailreader的例子中,struts中的配置如下:

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_save" method="save" class="mailreader2.Subscription">  
                <interceptor-ref name="user-submit" />  
            <action>  
      
            <action name="Subscription_*" method="{1}" class="mailreader2.Subscription" />  
      
        <package>   

 

然后在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>       

 

posted @ 2015-04-15 20:43  老款码农  阅读(478)  评论(0)    收藏  举报