SpringMVC在接收json类型请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype(MIME编码)是application/json,因此发送POST请求时需要设置请求报文头信息,否则SpringMVC在解析json类型请求参数时不会自动的转换成JSON数据。接收json类型参数示例:
var userList = new Array();
var user1 = {name:"小明",sex:1};
var user2 = {name:"小丽",sex:0};
userList.push(user1);
userList.push(user2);
var classes = {};
classes.className = "高三一班";
classes.type = 1; //理科
classes.users = userList;
$.ajax({
type: "POST",
url: "/addClasses.do",
dataType: 'json',
data: JSON.stringify(classes), //将对象序列化成JSON字符串
contentType: 'application/json;charset=utf-8', //设置请求头信息
success: function(data){
...
},
error: function(res){
...
}
});
public class Classes {
private String className;
private Integer type;
private List<User> users;
//省略getter/setter
}
public class User {
private String name;
private Integer sex;
//省略getter/setter
}
@Controller
public class ClassesController {
@RequestMapping(value = "/addClasses.do", method = RequestMethod.POST)
@ResponseBody
public Result addClasses(@RequestBody Classes classes) {
...
}
}