JQueryAjax请求参数List集合处理
引⾔
JQuery Ajax 发送请求参数⼀般都是基本类型,⽐如 String、int;那么,请求参数如果是 List 集合应该如何处理呢?
情况⼀:Aajx 发送 List 类型请求参数
举例如下:
前端代码
//声明list
var list = [];
//放⼊string对象
for (var i = 0; i < 3; i++) {
list[i]="tom";
}
$.ajax({
url : 'test',
data : "list":list,
type : "POST",
success : function(data) {
alert(data);
}jquery实现ajax
});
后端代码
@RequestMapping("test")
@ResponseBody
public String ajaxList(List<String> list){
for (String str : list) {
System.out.println(str);
}
return "OK";
}
可以看出,List 类型请求参数与基本类型请求参数没什么区别,⽆⾮就是服务器请求参数绑定时类型要写 List 。
情况⼆:Ajax 发送 List 类型请求参数
这种情况就要⿇烦⼀些了,SpringMVC ⽆法直接绑定复杂的请求参数类型,需要⽤到第三⽅ json 解析⼯具,⽐如 jackson 。
maven 导⼊ jackson 依赖包
<dependency>
<groupId>com.</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.3</version>
</dependency>
前端代码
//声明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<User>
JavaType jt = TypeFactory().constructParametricType(ArrayList.class, User.class);
List<User> userList=  (List<User>)adValue(list, jt);
return "OK";
}
以上代码参数绑定的是 String 类型,因为 ajax 发送的就是 String 类型。接着,就是使⽤ jackson ⼯具将json 字符串转换为 Java 对象即可。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。