Struts2准备方法无法处理

时间:2012-05-16 14:45:18

标签: java struts2

当我使用implements Preparable并覆盖prepare()方法时,如果我在准备中遇到任何问题,我会使用com.opensymphony.xwork2.ActionSupport addActionError设置操作错误。

在prepare方法之后设置我想在真实初始化方法中处理此消息的错误消息。

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 个答案:

答案 0 :(得分:1)

不确定;这是正常行为。

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

如果您不希望中断(非标准)工作流程,请不要在prepare()方法中设置错误。另一种方法是在prepare()中设置一个可以在initializeAndDo方法中检查的标记 - 这会使"workflow"不会使请求发生短路。