2012-10-26 65 views
0

我是新來的結構2.0。我想用攔截器運行我的第一個小應用程序,並希望只使用excecute方法進行驗證。驗證攔截器中的excludemethod不支持strut 2

但它調用驗證函數之前都填充和excecute方法。 任何人都可以告訴我我失蹤了。

以下是我SampleAction類。

package demo; 

import com.opensymphony.xwork2.ActionSupport; 

public class SampleAction extends ActionSupport { 

private static final long serialVersionUID = 1L; 
    public void validate() 
    { 
     System.out.println("validate() method called"); 
    } 

    public String populate() 
    { 
     System.out.println("populate() method called"); 
     return "populate"; 
    } 

    public String execute() 
    { 
     System.out.println("execute() method called"); 
     return SUCCESS; 
    } 
} 

並按照在這裏你聲明excludeMethods參數,我struct.xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apache.org/dtds/struts-2.0.dtd"> 

<struts> 
    <package name="default" extends="struts-default">  
     <action name="*Sample" method="{1}" class="demo.SampleAction"> 
     <interceptor-ref name="defaultStack" > 
     <param name="validation.excludeMethods"> populate</param> 
     <result name="populate">/first.jsp</result> 
     <result name="success">/success.jsp</result> 
     </action> 
    </package> 
</struts> 
+0

這甚至不是一個有效的配置文件。如果它確實存在於一個名爲「struct.xml」的文件中,你聲稱它無效無關緊要。請更精確,更加小心。 –

+0

可否請你給我有效的配置文件格式 –

+0

首先,有效的XML。 –

回答

1

更改部分:

<interceptor-ref name="defaultStack"> 
    <param name="validation.excludeMethods">populate</param> 
</interceptor-ref> 

更新

ValidationInterceptor的javadoc

alwaysInvokeValidate - 默認爲true。如果真正的validate()方法總是被調用,否則它不會。

程序 - 默認爲true。如果爲true並且該操作爲Validateable call validate(),並且以「validate」開頭的任何方法。

聲明 - 默認爲true。基於xml或註釋執行驗證。

另請參閱有關Struts2中的驗證http://struts.apache.org/2.x/docs/validation.html

+0

嗨亞歷山大,我已經改變了我的結構文件 和替換我用你的代碼,但它仍然不能正常工作, –

+0

定義「將無法正常工作。」 –

+0

對不起,我的英語。它沒有正常工作,在填充方法之前驗證函數被執行 –