使用AJAX jQuery的Struts中的结果类型JSON

时间:2014-09-16 06:10:09

标签: jquery ajax json struts2

我正在尝试使用struts和jquery构建一个Web应用程序。

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

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

当我在所有相应位置进行更改后执行应用程序时,请求被传递给Action类和DAO方法,控件将成功返回到屏幕。但是返回的数据在屏幕上不可用,我收到一条错误消息:

  

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

由于我有一些其他的ajax调用,我对它们进行了比较,发现struts.xml中缺少结果类型,然后我也改变了它。它的工作正常。

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

问题是:

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

1 个答案:

答案 0 :(得分:1)

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

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

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