7

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

我在下面看到了redirectredirectAction的 URL 。

我很清楚以下几点:

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

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

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

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

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

其次,我仍然不太清楚这两者之间的区别。

4

2 回答 2

2

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

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

你可以用一个 plain 做同样的事情redirect,但你需要提供动作扩展,如果有的话,所以它有点丑陋和脆弱(例如,如果动作扩展发生变化,尽管这种情况很少发生)。

于 2013-09-25T13:58:12.247 回答
2

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

该语句是好的,更好的构建 URLActionMapping由结果类型实现,redirectAction而不是手动编码。即使手动总是使用UrlHelper而不是硬编码。在 JSP 中总是使用s:url标签。

于 2013-09-25T12:33:12.933 回答