【问题标题】:Multiple result types in Struts2?Struts2 中的多种结果类型?
【发布时间】:2011-09-21 07:27:24
【问题描述】:

我有一个使用 Tiles 的 Struts2 应用程序。如何在动作映射中获得多种结果类型?因为我需要将 de 输出设置为 JSON 数据,并同时设置 Tiles。我试过了:

<action
    name="home"
    class="com.deveto.struts.actions.HomeAction" >
    <result name="success" type="tiles,json">tiles.home</result>
</action>

但这不起作用

【问题讨论】:

  • 一个响应不能有多种类型;您只能对 HTTP 请求提交一个响应。也许您可以更详细地解释您要做什么。
  • 正如史蒂文所说,你不能两者兼得。这没有意义。 tiles 结果类型为您提供 HTML,而 json 类型为您提供......好吧...... JSON ;)

标签: java json jakarta-ee struts2 tiles2


【解决方案1】:

如果你有 2 个不同的结果呢?!

<result name="successJSON" type="json"/>

<result name="successTiles" type="tiles">tiles.home</result>

然后在你的服务器代码中你只是路由到正确的?!

【讨论】:

  • 不是解决方案,我需要同时获得它,如果我将类型设置为 JSON,那么我可以让瓷砖工作
  • json 结果类型几乎专门用于 ajax。所以有人会认为这就是他所追求的。然而,tile 像 JSP 一样呈现页面,因此需要假设它不是。
【解决方案2】:

据我所知,没有办法同时返回多个东西。一旦所有的瓷砖都完成了,浏览器只会期待一件事,要么是 JSON,要么是 HTML。

我可以想到两种方法:双重请求(每种结果类型一种)或使用一种生成另一种(获取 JSON 并使用 JavaScript 在客户端构造 HTML)。

你想要完成什么你需要这两个结果?

【讨论】:

    【解决方案3】:

    为 Tiles+JSON 创建一个新的结果类型并使用它...你不能在一个结果标签中定义 2 个结果类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多