@RequestBody 接收的是一个 Json 对象的字符串, 而不是一个 Json 对象. 然而在 ajax 请求往往传的都是 Json 对象, 后来发现用 JSON.stringify(data) 的方式就能将对象变成字符串. 同时 ajax 请求的时候也要指定 dataType: "json",contentType:"application/json" 这样就可以轻易的将一个对象或者 List 传到 Java 端, 使用 @RequestBody 即可绑定对象或者 List.
不过这是普通的 jquery 请求可能需要封装, 如果有第三方 JSUI 组件库的话, 比如 LigerUI, easyUI 等这种方式已经封装好了, 不用这么麻烦.
JavaScript 代码:
- <script type="text/javascript">
- $(document).ready(function(){
- var saveDataAry=[];
- var data1={"userName":"test","address":"gz"};
- var data2={"userName":"ququ","address":"gr"};
- saveDataAry.push(data1);
- saveDataAry.push(data2);
- $.ajax({
- type:"POST",
- url:"user/saveUser",
- dataType:"json",
- contentType:"application/json",
- data:JSON.stringify(saveData),
- success:function(data){
- }
- });
- });
- </script>
Java 代码
- @RequestMapping(value = "saveUser", method = {RequestMethod.POST }})
- @ResponseBody
- public void saveUser(@RequestBody List<User> users) {
- userService.batchSave(users);
- }
来源: http://www.bubuko.com/infodetail-2644499.html