SpringMVC接收复杂集合对象(参数)代码示例

 ​

这篇文章主要介绍了SpringMVC接收复杂集合对象(参数)代码示例,举接收List<String>、List<User>、List<Map<String,Object>>、User[]、User(bean里面包含List)几种较为复杂的集合参数,具有一定参考价值,需要的朋友可以了解下。 ​

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(); ​​​​​​​​… ​​​​​​​​} ​​​​}​