当我使用 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:操作 block 中没有拦截器。
<action name="action_name" method="initializAndDo" class="TestClass">
<result name="input">/pages/input.jsp</result>
<result name="error">/pages/error.jsp</result>
</action>
有什么想法吗?
最佳答案
当然;这是正常行为。
如果出现错误,“workflow”
拦截器将看到该错误,并转发到“input”
结果。
如果您不想让(非标准)工作流程中断,请不要在 prepare()
方法中设置错误。一种替代方法是在 prepare()
中设置一个标志,可以在 initializeAndDo
方法中检查该标志 - 这将防止 “workflow”
短路请求。
关于java - Struts2的prepare方法无法处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10621009/