原文: https://www.jb51.net/article/128233.htm
SpringMVC接收复杂集合对象(参数)代码示例
更新时间:2017年11月15日 09:18:15 作者:jxd_zxf 我要评论
SpringMVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype(MIME编码)是application/json,因此发送POST请求时需要设置请求报文头信息,否则SpringMVC在解析集合请求参数时不会自动的转换成JSON数据再解析成相应的集合。以下列举接收List<String>、List<User>、List<Map<String,Object>>、User[]、User(bean里面包含List)几种较为复杂的集合参数示例:
接收List<String>集合参数:
1、页面js代码:
Js代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
var
idList =
new
Array();
idList.push(“1”);
idList.push(“2”);
idList.push(“3”);
var
isBatch =
false
;
$.ajax({
type:
"POST"
,
url:
"<%=path%>/catalog.do?fn=deleteCatalogSchemes"
,
dataType:
'json'
,
data: {
"idList"
:idList,
"isBatch"
:isBatch},
success:
function
(data){
…
},
error:
function
(res){
…
}
});
|
2、Controller方法:
Java代码
1
2
3
4
5
6
7
8
9
10
|
@Controller
@RequestMapping
(
"/catalog.do"
)
public
class
CatalogController {
@RequestMapping
(params =
"fn=deleteCatalogSchemes"
)
@ResponseBody
public
AjaxJson deleteCatalogSchemes(
@RequestParam
(
"idList[]"
) List<String> idList,Boolean isBatch) {
…
}
}
|
接收List<User>、User[]集合参数:
1、User实体类:
Java代码
1
2
3
4
5
|
public
class
User {
private
String name;
private
String pwd;
//省略getter/setter
}
|
2、页面js代码:
Js代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
var
userList =
new
Array();
userList.push({name:
"李四"
,pwd:
"123"
});
userList.push({name:
"张三"
,pwd:
"332"
});
$.ajax({
type:
"POST"
,
url:
"<%=path%>/catalog.do?fn=saveUsers"
,
data: JSON.stringify(userList),
//将对象序列化成JSON字符串
dataType:
"json"
,
contentType :
'application/json;charset=utf-8'
,
//设置请求头信息
success:
function
(data){
…
},
error:
function
(res){
…
}
});
|
3、Controller方法:
Java代码
1
2
3
4
5
6
7
8
9
10
|
@Controller
@RequestMapping(
"/catalog.do"
)
public
class
CatalogController {
@RequestMapping(params =
"fn=saveUsers"
)
@ResponseBody
public
AjaxJson saveUsers(@RequestBody List<User> userList) {
…
}
}
|
如果想要接收User[]数组,只需要把saveUsers的参数类型改为@RequestBodyUser[]userArray就行了。
接收List<Map<String,Object>>集合参数:
1、页面js代码(不需要User对象了):
Js代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
var
userList =
new
Array();
userList.push({name:
"李四"
,pwd:
"123"
});
userList.push({name:
"张三"
,pwd:
"332"
});
$.ajax({
type:
"POST"
,
url:
"<%=path%>/catalog.do?fn=saveUsers"
,
data: JSON.stringify(userList),
//将对象序列化成JSON字符串
dataType:
"json"
,
contentType :
'application/json;charset=utf-8'
,
//设置请求头信息
success:
function
(data){
…
},
error:
function
(res){
…
}
});
|
2、Controller方法:
Java代码
1
2
3
4
5
6
7
8
9
10
|
@Controller
@RequestMapping
(
"/catalog.do"
)
public
class
CatalogController {
@RequestMapping
(params =
"fn=saveUsers"
)
@ResponseBody
public
AjaxJson saveUsers(
@RequestBody
List<Map<String,Object>> listMap) {
…
}
}
|
接收User(bean里面包含List)集合参数:
1、User实体类:
Java代码
1
2
3
4
5
6
|
public
class
User {
private
String name;
private
String pwd;
private
List<User> customers;
//属于用户的客户群
//省略getter/setter
}
|
2、页面js代码:
Js代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
var
customerArray =
new
Array();
customerArray.push({name:
"李四"
,pwd:
"123"
});
customerArray.push({name:
"张三"
,pwd:
"332"
});
var
user = {};
user.name =
"李刚"
;
user.pwd =
"888"
;
user. customers = customerArray;
$.ajax({
type:
"POST"
,
url:
"<%=path%>/catalog.do?fn=saveUsers"
,
data: JSON.stringify(user),
//将对象序列化成JSON字符串
dataType:
"json"
,
contentType :
'application/json;charset=utf-8'
,
//设置请求头信息
success:
function
(data){
…
},
error:
function
(res){
…
}
});
|
3、Controller方法:
Java代码
1
2
3
4
5
6
7
8
9
10
11
|
@Controller
@RequestMapping
(
"/catalog.do"
)
public
class
CatalogController {
@RequestMapping
(params =
"fn=saveUsers"
)
@ResponseBody
public
AjaxJson saveUsers(
@RequestBody
User user) {
List<User> customers = user.getCustomers();
…
}
}
|