【问题标题】:Struts 2.3 - redirect vs redirectActionStruts 2.3 - 重定向与redirectAction
【发布时间】:2013-09-30 21:48:13
【问题描述】:

redirectredirectAction 在 Struts2.3 上下文中的主要区别是什么。

我在下面看到了redirectredirectAction 的网址。

以下几点我很清楚:

  • redirect 类似于 sendRedirect() 方法。创建新请求,清除先前的值堆栈和操作(操作实例、操作错误、字段错误等)不再可用。
  • redirectAction 中,控制跳转到不同的动作(在相同或其他包中)
  • 建议使用 redirectAction 而非重定向。

但是当我实现上述两个示例时,我只需要更改我的struts.xml

  • 在这两种情况下,操作都不再可用,
  • 新请求已创建,
  • 生成的 URL 相同。

首先,我对redirectAction Apache 文档中写的声明感到困惑

这比 ServletRedirectResult 更好,因为它不 要求您对 ActionMapper 处理的 URL 模式进行编码 在你的 struts.xml 配置文件中。这意味着你可以改变 您的 URL 模式在任何时候,您的应用程序仍然可以工作。 强烈建议,如果您要重定向到另一个 操作,您使用此结果而不是标准重定向结果。

其次,我还是不太清楚这两者的区别。

【问题讨论】:

  • redirect 正在重定向到应用程序上下文外部的某个 URL,例如“google”或 yahoo,其中 redirectAction 在您的应用程序范围内重定向。此外,在所有情况下,新请求都会生成。
  • 为什么要评论,这就是答案,清晰而直接;)

标签: apache redirect configuration struts2 actionresult


【解决方案1】:

区别很明显:redirectAction 只是另一种结果类型,它扩展了redirect 结果类型,提供了actionNamenamespacemethod 属性。这些属性用于构建用于替换 redirect 结果类型的 location 属性的 URI。

语句没问题,最好从 ActionMapping 构建 URL,它由 redirectAction 结果类型实现,而不是手动编码。即使手动总是使用UrlHelper 而不是硬编码。在 JSP 中始终使用s:url 标记。

【讨论】:

  • 如果很明显就没有必要问这个问题了:-)
  • 如果您有问题可以向标签提出,换句话说,您的评论对我很久以前提供的答案没有意义。您也可以像往常一样对此和 OP 帖子进行投票。
  • Merriam-Webster 将明显定义为“容易发现、看到或理解”。我不认为区别很明显。不过,我很高兴在这里找到答案。
【解决方案2】:

一个重定向到动作,一个重定向到任意资源。

actionRedirect 更适合大多数 Struts 2 应用程序,因为大多数重定向将发生在应用程序内部的位置,您需要提供的只是映射中的动作名称。

你可以用一个普通的redirect 做同样的事情,但是你需要提供动作扩展,如果有的话,所以它有点难看而且有点脆弱(例如,如果动作扩展改变了,虽然这种情况很少发生)。

【讨论】:

    猜你喜欢
    • 2011-12-27
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 2015-02-14
    • 2012-02-14
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多