Json响应给出了Http 500错误

时间:2015-05-20 12:04:34

标签: java ajax json spring-mvc

我在尝试进行返回Json的ajax POST调用时遇到内部错误。 ajax调用是从js页面进行的:

 $.post(
                'FilterAsJson',
                $(formWithReportData).serialize(),
                function(data){funtion_body})

这是我的Spring MVC调用方法:

@RequestMapping(value = "/Reporting/FilterAsJson", method = RequestMethod.POST)
        public @ResponseBody PagedQueryResult<GetEntitlementOverviewReportResult> filterAsJson(@ModelAttribute GetEntitleReportQuery query, HttpSession session)

    {
        getEntitlementOverviewFromSession(session).updateFromQuery(query, session);
        return queryDispatcher.dispatch(query);
}

问题来自于我在此类GetEntitlementOverviewReportResult中设置了几个字段(30个中的17个)。这是一个带有简单setter getter的bean类。如果我设置所有30个字段,它工作正常。 你能否建议如何设置Json响应,以便我能解决这个问题。

2 个答案:

答案 0 :(得分:0)

500错误表示您的服务器在处理请求时遇到错误。由于您使用的是AJAX,因此无法从服务器看到完整的消息。

2个选项:

A - 检查服务器日志

B - 见下文:

我知道通过异步调用来检查这一点的最好方法是按F12在您的Web浏览器中显示您的开发人员工具。

然后,单击浏览器工具上的“网络”选项卡,您可以看到应用程序发出的所有请求。

提出给您500错误的请求,然后在网络请求列表中找到它。您应该看到500错误并且能够看到实际输出(服务器响应),它将为您提供实际消息。

答案 1 :(得分:-1)

@RequestMapping(value = "/Reporting/FilterAsJson", headers = "Accept=application/json", method = RequestMethod.POST)
public @ResponseBody PagedQueryResult<GetEntitlementOverviewReportResult> filterAsJson(@ModelAttribute GetEntitleReportQuery query, HttpSession session) {
    getEntitlementOverviewFromSession(session).updateFromQuery(query, session);
    return queryDispatcher.dispatch(query);
}

<强>已更新 原来如此。我没有正确理解问题。

  1. 请向我们展示传播@ModelAttribute的类GetEntitleReportQuery。

  2. 同时检查填充并非所有字段时方法序列化的内容。它存在吗?

  3. <强>已更新 一个主意。 当你没有填满所有课堂时,他会尝试找到有这些领域的课,但却找不到。因此,尝试在Controller中命名您的类并添加绑定结果参数:filterAsJson(@ModelAttribute("query") GetEntitleReportQuery query, HttpSession session, BindingResult result)也从JSP发送,名称为“query”。