1

当我使用implements Preparable和覆盖prepare()方法时,如果在准备过程中遇到任何问题,我会使用com.opensymphony.xwork2.ActionSupport addActionError.

在准备方法设置错误消息后,我想在真正的初始化方法中处理此消息。

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>

有什么想法吗?

4

1 回答 1

1

当然; 这是正常行为。

如果有错误,"workflow"拦截器会看到并转发"input"结果。

如果您不想中断(非标准)工作流程,请不要在prepare()方法中设置错误。一种替代方法是设置一个prepare()可以在方法中检查的标志initializeAndDo- 这将防止"workflow"短路请求。

于 2012-05-16T21:03:30.757 回答