类型请求参数
这种情况就要麻烦一些了,SpringMVC 无法直接绑定复杂的请求参数类型,需要用到第三方 json 解析工具,比如 jackson。
maven 导入 jackson 依赖包
com.fasterxml.jackson.core
jackson-databind
2.7.3
前端代码
//声明list
var list = [];
//创建两个user对象
var a= {};
a.name="tom";
a.age=23;
a.city="上海";
var b = {};
b.name="jack";
b.age=25;
a.city="安徽";
//将user放入_list
list.push(a);
list.push(b);
$.ajax({
url : 'test',
data : "list":JSON.stringify(list),
type : "POST",
success : function(data) {
alert(data);
}
});
JSON.stringify(list) 代码的作用是将 js 对象转换为 json 格式的字符串。这样,无论 js 对象多复杂,最终发送给服务器的请求参数就是一个 json 格式字符串罢了。
后端代码
@RequestMapping("test)
@ResponseBody
public String ajaxList(String list) throws Exception{
//jackson对象
ObjectMapper mapper = new ObjectMapper();
//使用jackson将json转为List
JavaType jt = mapper.getTypeFactory().constructParametricType(ArrayList.class, User.class);
List userList= (List)mapper.readValue(list, jt);
return "OK";
}
以上代码参数绑定的是 String 类型,因为 ajax 发送的就是 String 类型。接着,就是使用 jackson 工具将 json 字符串转换为 Java 对象即可。