当我使用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>
有什么想法吗?
答案 0 :(得分:1)
不确定;这是正常行为。
如果有错误,"workflow"
拦截器会看到,并转发到"input"
结果。
如果您不希望中断(非标准)工作流程,请不要在prepare()
方法中设置错误。另一种方法是在prepare()
中设置一个可以在initializeAndDo
方法中检查的标记 - 这会使"workflow"
不会使请求发生短路。