【问题标题】:Result type JSON in Struts 2 with jQuery Ajax使用 jQuery Ajax 的 Struts 2 中的结果类型 JSON
【发布时间】:2014-09-16 06:10:09
【问题描述】:

我正在尝试使用 Struts 2 和 jQuery 构建一个 Web 应用程序。

更改下拉列表时,我需要从数据库中获取详细信息。在我的struts.xml 配置中,我定义了方法和动作如下:

<result name="addressChange">
    <param name="root">requestBean</param>
</result>

当我在各个地方进行更改后执行应用程序时,请求被传递给Action 类和DAO 方法,并且控制成功返回到屏幕。但返回的数据在屏幕上不可用,我收到一条错误消息:

在 jquery 中找不到 url ... 404(匿名函数)ajax。

由于我有其他一些 ajax 调用,所以我比较了它们,发现 struts.xml 中缺少结果类型,然后我同样更改了它。它现在工作正常。

<result name="addressForBrigade" type="json">
    <param name="root">requestBean</param>
</result>

问题是:

  1. Struts 是如何将其识别为 JSON 对象,又如何将其覆盖到 POJO 中?
  2. 我们什么时候应该在 Struts 2 中使用 JSON 作为结果类型?
  3. 我们可以使用其他结果类型吗?
  4. 每当有 AJAX 调用时,我们是否需要将结果类型用作 JSON?

【问题讨论】:

  • 在回答您的其他问题时,我已经linked this;在那个问答中有一个来自 RomanC 的答案,它解释了如何使用 stream 结果,如果您想在不使用 json 结果的情况下返回 JSON 对象。 BTW JSON 是当今 AJAX 调用的标准
  • @AndreaLigios:感谢您的建议。它现在给出了一个清晰的想法。我最大的挑战是,当我在文本框中输入值并按 ENTER 键时,表单被提交,我的意思是相应的操作方法被调用。我试图不提交表格,但不能。我使用 preventDefault() 停止和其他一些方法,但不能。你也可以帮我解决这个问题吗?

标签: jquery ajax json struts2


【解决方案1】:

当您将type="json" 添加到结果中时,您似乎已经回答了第一个问题。没有它,"dispatcher" 类型将被隐式使用。如果要返回带有响应的 JSON 对象,则应使用 json 结果类型。您可以使用其他结果类型,这取决于您希望响应返回什么。

在将数据格式化为响应时,指定Content-Type header 是有意义的。您不需要为不返回 JSON 对象的结果指定 json 结果类型,使用其他结果类型,但您应该使用 jQuery Ajax 中的 dataType 属性来指定您期望返回的数据类型服务器。

每种结果类型都由配置定义,并在执行时由调度程序拾取。如果您没有指定结果类型,则使用"dispatcher" 结果类型,它会调用请求调度程序转发到 JSP 以将其输出呈现给响应。它仅生成您可以在浏览器源代码窗口中看到的 HTML 内容。

【讨论】:

    猜你喜欢
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2012-06-04
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多