JSON 响应给出 Http 500 内部服务器错误

问题描述 投票:0回答:2

尝试进行返回 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 响应,以便我可以纠正此问题。

java ajax json spring-mvc
2个回答
0
投票

500错误意味着您的服务器在处理请求时遇到错误。 由于您使用的是 AJAX,因此您看不到来自服务器的完整消息。

2 个选项:

A - 检查服务器日志

B - 见下文:

据我所知,通过异步调用检查这一点的最佳方法是按 F12 在 Web 浏览器中调出开发人员工具。

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

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


-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. 还要检查当您未填写所有字段时方法会序列化什么。存在吗?

已更新 一个想法。 当您未填写班级的所有字段时,他尝试查找具有此类字段的班级但找不到。因此,尝试在 Controller 中命名您的类并添加绑定结果参数:

filterAsJson(@ModelAttribute("query") GetEntitleReportQuery query, HttpSession session, BindingResult result)
也从名称为“query”的 JSP 发送。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.