代码之家  ›  专栏  ›  技术社区  ›  Jaikrat

Struts 2.3-重定向与重定向操作

  •  7
  • Jaikrat  · 技术社区  · 11 年前

    两者的主要区别是什么 redirect redirectAction 在Struts2.3上下文中。

    我看到了以下的URL redirect redirectAction .

    我清楚以下几点:

    • redirect类似于sendRedirect()方法。创建新的请求,清除以前的值堆栈和不再可用的操作(操作实例、操作错误、字段错误等)。
    • 在里面 结果类型 ,控件跳转到不同的操作(在相同或其他包中)
    • 结果类型 建议不要重定向。

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

    • 在这两者中动作不再可用,
    • 创建新的请求,
    • 生成的URL相同。

    首先,我对Apache文档中的语句感到困惑 结果类型

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

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

    2 回复  |  直到 11 年前
        1
  •  2
  •   Roman C    11 年前

    区别是显而易见的: redirectAction 只是另一种结果类型,它扩展了 redirect 提供属性的结果类型 actionName , namespace method 。这些属性用于构建URI,该URI用于替换 location 的属性 重新使用 结果类型。

    该语句是可以的,最好从中构建URL ActionMapping 其由 结果类型 结果类型,而不是手动编码。即使手动,也总是使用 UrlHelper 而不是硬编码。在JSP中,始终使用 s:url 标签

        2
  •  2
  •   Dave Newton    11 年前

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

    actionRedirect 对于大多数Struts2应用程序来说更好,因为大多数重定向都会发生在应用程序内部的位置,并且您只需要提供映射中的操作名称。

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