2012-05-16 42 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"避免请求短路。