java - Struts2的prepare方法无法处理

标签 java struts2

当我使用 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/

相关文章:

java - neo4j 动态关系类型,不使用枚举

java - 如何转换 struts2 中不是 SHORT 格式的日期?

java - Struts 2 JSON JQuery Grid 不点击 Action

java - JSESSIONID 出现在 URL 中后,我的 Web 应用程序停止工作

java - 尝试学习spring或struts框架的前提是什么?

java - 重置 ObjectOutPutStream 以更新新对象状态?

java - 在 Netbeans 中使用 Master/Detail Sample Form 时如何加入另一个 MySQL 表?

java - Autowiring 的 JavaMailSender 对象抛出空指针异常(RestController 类除外)

java - 在 Java 中使用身份验证标签的 AES GCM 实现

java - 隐藏从jsp传递给struts2 Action 类的参数