【问题标题】:How to pass ActionMessage and ActionError in redirect action [duplicate]如何在重定向操作中传递 ActionMessage 和 ActionError [重复]
【发布时间】:2012-09-04 07:18:02
【问题描述】:

可能重复:
Can I propagate struts2 ActionErrors between different action classes?

在行动.Test1

公共类 Test1 扩展 ActionSupport {

    public String execute() {
        addActionMessage("Hello in test2");
        return SUCCESS;
    } else {
      addActionError("Please try again");
        return INPUT;
    }
}

在 struts.xml 中

<action name="test1" class="action.Test1">
        <result name="success" type="redirect">test2</result>
  </action>
<action name="test2" class="action.Test2">
        <result name="success">/test2.jsp</result>
</action>

我想在test2.jsp 中显示ActionMessageActionError

【问题讨论】:

标签: jsp struts2


【解决方案1】:

对于redirect,这意味着一个新请求,这将使框架删除与第一个请求相关的所有数据,请求和响应的新对象将被放置在值堆栈中,因此在您的情况下您的ActionMessageActionError 数据丢失。

如果您在相同的应用程序上下文中执行此操作,则更建议使用 redirectAction 如果它要进行其他操作,因为redirect 结果用于重定向到另一个 URL(网络资源)。

为了保存数据,您有这些选项

  1. 使用会话保存值并在其他操作中检索值。
  2. 利用作用域

【讨论】:

  • 这样做并非不可能,有些情况需要重定向并且需要传递动作消息,这就是为什么 struts2 仍然支持这种情况。 OP正在寻求帮助,而您却进行了不必要的演讲。
  • @Macchiato:您没有阅读问题也没有正确回答,因为我已经给出了解决方案,并且提供背景知识总是很好,而不是给出两行代码。这条评论不是反对您的意见,我完全尊重您的意见。
  • 这家伙写了一个拦截器,应该可以为你完成这项工作glindholm.wordpress.com/2008/07/02/…
  • @Kris:在任何地方都没有提到拦截器何时以及如何编写,而且这是重定向,因此您需要保存这些消息,否则它们将丢失。
猜你喜欢
  • 2011-05-29
  • 2020-09-29
  • 1970-01-01
  • 2022-08-05
  • 1970-01-01
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多