Struts 2.3 - 重定向与redirectAction

时间:2013-09-25 10:37:20

标签: apache redirect configuration struts2 actionresult

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

我在下面看到redirectredirectAction的网址。

我清楚以下几点:

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

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

  • 两者都有,行动不再可用,
  • 创建了新请求,
  • 生成的网址相同。

首先,我对在redirectAction

的Apache文档中编写的语句感到困惑
  

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

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

2 个答案:

答案 0 :(得分:2)

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

声明没问题,更好地从ActionMapping构建网址,该网址由redirectAction结果类型实现,而不是手动编码。甚至手动总是使用UrlHelper而不是硬编码。在JSP中始终使用s:url标记。

答案 1 :(得分:1)

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

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

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