springmvc controller层接收List类型的参数
Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype (MIME编码)是application/json,因此发送POST请求时需要设置请求报文头信息,否则Spring MVC在解析集合请求参数时不会自动的转换成JSON数据再解析成相应的集合。以下列举接收List<String>、List<User>、List<Map<String,Object>>、User[]、User(bean里面包含List)几种较为复杂的集合参数示例:
1 | <strong>第一种类型:直接接收list <strong>接收List<String>集合参数</strong></strong> |
1 | 前台通过ajax传输数据<br><br> var allFilePaths = new Array();<br> <br> for (var i = 0 ; i < 10 ; i++) {<br> allFilePaths.push( "xx" +i);<br> }<br> $.ajax({ <br> url : url,<br> type : 'POST' ,<br> dataType: 'json' ,<br> contentType: "application/json" , //ajax默认是application/x-www-form-urlencoded 需要注意<br> data : JSON.stringify(allFilePaths),//转为json格式<br> success : function(col) {<br> <br> }<br> },<br> error : function(col){<br> }<br> });<br><br>controller层<br><br> @RequestMapping("/delFileInfo")<br> @ResponseBody<br> public void delFileInfo(@RequestBody List<String> macroPath) throws IOException<br> {<br> <br> for(String sPath :macroPath)<br> {<br> System.out.println(sPath);<br> }<br> }<br><br> |
第二种类型:把要传递的集合封装成一个List对象或其他,可以达到传递List的目的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | js层: Order.delOrders({orderIds: $scope.ids}, function () { Flash.success( '删除成功!' ); $state.reload(); }); viewmodel层: public class ListObj { private List<String> orderIds ; public List<String> getOrderIds() { return orderIds; } public void setOrderIds(List<String> orderIds) { this .orderIds = orderIds; } } Controller层: @RequestMapping (value = "/delOrders" ) @ResponseBody public ViewData deleteOrders( @RequestBody ListObj orderIds, HttpServletRequest request) { ViewData viewData = new ViewData(); for (String orderId:orderIds.getOrderIds()){ System.out.println(orderId); } // String[] arr = orderIds.split(","); // ViewData viewData = adminOrderService.deleteOrders(Arrays.asList(arr),getLoginInfo(request)); return viewData; } |
第三种类型:接收List<User>、User[]集合参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | User实体类: public class User { private String name; private String pwd; //省略getter/setter } 页面js代码: 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){ … } }); Controller方法: @Controller @RequestMapping ( "/catalog.do" ) public class CatalogController { @RequestMapping (params = "fn=saveUsers" ) @ResponseBody public AjaxJson saveUsers( @RequestBody List<User> userList) { … } } 如果想要接收User[]数组,只需要把saveUsers的参数类型改为 @RequestBody User[] userArray就行了。 |
第4种类型:接收List<Map<String,Object>>集合参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 页面js代码(不需要User对象了): 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){ … } }); Controller方法: @Controller @RequestMapping ( "/catalog.do" ) public class CatalogController { @RequestMapping (params = "fn=saveUsers" ) @ResponseBody public AjaxJson saveUsers( @RequestBody List<Map<String,Object>> listMap) { … } <strong> } </strong> |
第五种类型:接收User(bean里面包含List)集合参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | User实体类: public class User { private String name; private String pwd; private List<User> customers; //属于用户的客户群 //省略getter/setter } 页面js代码: 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){ … } }); Controller方法: @Controller @RequestMapping ( "/catalog.do" ) public class CatalogController { @RequestMapping (params = "fn=saveUsers" ) @ResponseBody public AjaxJson saveUsers( @RequestBody User u |
Map<String,Object> map 类型
js处理:
分类:
spring
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!