2012-05-16 74 views
1

當我使用implements Preparable並覆蓋prepare()方法,如果我在準備中遇到任何問題,我設置了一個動作錯誤com.opensymphony.xwork2.ActionSupport addActionErrorStruts2的準備方法無法處理

準備方法後設置我要處理的實際初始化方法此消息的錯誤消息。

public class TestClass implements Preparable { 

    public void prepare() { 
     // ... 
     if (error) { 
      addActionError("error"); 
     } 
    } 

    public String initializeAndDo() { 
     String target = ERROR; 
     // ... 
     return target; 
    } 

} 

當我調試它,它從來沒有達到initiliazeAndDo方法和自動返回INPUT。

struts.xml中:在動作塊沒有截擊。

<action name="action_name" method="initializAndDo" class="TestClass"> 
    <result name="input">/pages/input.jsp</result> 
    <result name="error">/pages/error.jsp</result> 
</action> 

有什麼想法嗎?

回答

1

當然;這是正常的行爲。

如果有錯誤,"workflow"攔截器會看到,並轉發到"input"結果。

如果您不希望您的(非標)的工作流中斷,請不要在prepare()方法設置錯誤。一種替代方法是在prepare()中設置一個標誌,可以在initializeAndDo方法中檢查 - 這會使"workflow"避免請求短路。