在遇到这个问题前,真没想到过在 java web 中还能有这样的问题。-. -!!!
问题是这样的:还是 jquery,我使用 jquery 发送序列化的 json 数据提交到指定的 rest controller api,但是会出现 500 no message available 错误并且控制台中看有 NullPointerException 错误。我看了浏览器上获取到的请求数据包,请求是正常发送出去的,也就是说可能不是 js 的问题。js 和 java 代码(样例)大概如下:
js:
var name = /*...*/; var email = /*...*/; var postData = JSON.stringify({ name: name, email: email, }); $.ajax({/*...*/});
controller.java:
/* controller class */ @PostMapping("/api/xxx") public Map<String, String> xxx(@RequestBody MyBean foo) { ArrayList<String> names = foo.getNames(); ArrayList<String> emails = foo.getEamils(); // ... }
可能熟悉的人已经知道错在哪了。。。但我是第一次做 java web 。。。调试后发现,问题竟然在于字段名没有对上。。。
我们应该将上面 js 或者 java 中的代码对上,js 代码中是发送 name 和 email,那 java 代码中应该要 getName() 和 getEmail(),或者 js 代码改成 names 和 emails。这个数据的解析过程真的是坑死了。。。