尝试进行返回 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 响应,以便我可以纠正此问题。
500错误意味着您的服务器在处理请求时遇到错误。 由于您使用的是 AJAX,因此您看不到来自服务器的完整消息。
2 个选项:
A - 检查服务器日志
B - 见下文:
据我所知,通过异步调用检查这一点的最佳方法是按 F12 在 Web 浏览器中调出开发人员工具。
然后,单击浏览器工具上的“网络”选项卡,您可以看到应用程序发出的所有请求。
发出 500 错误的请求,然后在网络请求列表中找到它。 您应该看到 500 错误,并能够看到实际输出(服务器响应),这将为您提供实际消息。
@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);
}
已更新 我懂了。我没有正确理解问题。
请向我们展示传播 @ModelAttribute 的 GetEntitleReportQuery 类。
还要检查当您未填写所有字段时方法会序列化什么。存在吗?
已更新 一个想法。 当您未填写班级的所有字段时,他尝试查找具有此类字段的班级但找不到。因此,尝试在 Controller 中命名您的类并添加绑定结果参数:
filterAsJson(@ModelAttribute("query") GetEntitleReportQuery query, HttpSession session, BindingResult result)
也从名称为“query”的 JSP 发送。