Struts2.3上下文中redirect
和redirectAction
的主要区别是什么?
我在下面看到了redirect和redirectAction的 URL。
我清楚下面几点:
redirectAction
,控制跳转到不同的动作(在相同或其他包中) redirectAction
而不是redirect。 但是当我实现上面提到的两个例子,我只需要改变我的struts.xml
。
首先,我对在redirectAction
Apache文档中写的陈述感到困惑
这比ServletRedirectResult要好,因为它不要求将ActionMapper处理的URL模式编码到struts.xmlconfiguration文件中。 这意味着您可以随时更改您的url格式,并且您的应用程序仍然可以正常工作。 强烈build议,如果您redirect到另一个操作,则使用此结果而不是标准redirect结果。
其次,我对这两者的区别还不是很清楚。
区别很明显: redirectAction
只是另一个结果类型,它扩展了redirect
结果类型,提供了属性actionName
, namespace
和method
。 这些属性用于构建用于替代redirect
结果类型的location
属性的URI。
声明是可以的,更好的从ActionMapping
构建URL,这是由redirectAction
结果类型实现的,而不是手动编码。 即使手动使用UrlHelper
而不是硬编码。 在JSP中总是使用s:url
标记。
一个重定向到动作,一个重定向到任意的资源。
actionRedirect
对于大多数Struts 2应用程序来说更好,因为大多数重定向将发生在应用程序内部的位置,并且您需要提供的只是其映射中的操作名称。
你可以用一个简单的redirect
来做同样的事情,但是你需要提供动作扩展(如果有的话),所以它有点丑陋和脆弱(例如,如果动作扩展改变,尽管很少发生)。