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)几种较为复杂的集合参数示例:

第一种类型:直接接收list 接收List<String>集合参数
前台通过ajax传输数据

    var allFilePaths = new Array();
     
    for (var i = 0; i < 10; i++) {
        allFilePaths.push("xx"+i);
    }
    $.ajax({  
        url : url,
        type : 'POST',
        dataType: 'json',
        contentType: "application/json",   //ajax默认是application/x-www-form-urlencoded  需要注意
        data : JSON.stringify(allFilePaths),//转为json格式
        success : function(col) {
     
        }
        },
        error : function(col){
                }
    }); controller层     @RequestMapping("/delFileInfo")
    @ResponseBody
    public void delFileInfo(@RequestBody List<String> macroPath) throws IOException
        {
     
            for(String sPath :macroPath)
            {
                System.out.println(sPath);
            }
        }

第二种类型:把要传递的集合封装成一个List对象或其他,可以达到传递List的目的

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[]集合参数:

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>>集合参数:

页面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) {

}
}

 第五种类型:接收User(bean里面包含List)集合参数:

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处理:

springmvc controller层接收List类型的参数的更多相关文章

  1. springMVC怎么接收日期类型的参数?

    springMVC怎么接收日期类型的参数? springMVC的controller中用实体接受页面传递的参数,并且实体中的属性类型为日期类型,怎么接收呢?如果接收不到会进不到controller中. ...

  2. Spring+MVC Controller层接收App端请求的中文参数乱码问题。

    在正文之前,说明下Filter的作用: 过滤器顾名思义就是进行过滤的,可以实现代码的定向执行和预处理.通俗点说法filter相当于加油站,request是条路,response是条路,目的地是serv ...

  3. SpringMVC的controller层接收来自jsp页面通过<a href="/user/userUpdateInfo/>的中文乱码问题

    这种情况是,jsp页面的中文正常显示,数据的中文也是正常显示,但是在Controller层接收到的中文是乱码,如下图所示: 解决方法:在Controller层对前台传递的中文乱码进行处理,将它转换成u ...

  4. springMVC controller间跳转 重定向 传递参数的方法

    springMVC controller间跳转 重定向 传递参数的方法 spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参 ...

  5. springmvc,controller层在接收浏览器url传来的参数带中文乱码问题。

    请求地址:http://localhost:8080/saveFlashSale?fsRemark=哈哈哈哈哈 接收方法:@RequestMapping("/saveFlashSale&qu ...

  6. 重大发现 springmvc Controller 高级接收参数用法

    1.  数组接收 @RequestMapping(value="deleteRole.json") @ResponseBody public Object deleteRole(S ...

  7. form表单提交controller层接收到的值为乱码的问题

    今天遇到个中文乱码问题,大体情况是这样的:前台有一个form表单,其中有几个input的控件,值是带中文的,form表单只设置了id='form1' method='post'  action='xx ...

  8. SpringMVC Controller层的单元测试

    Getting Ready 测试相关Maven dependency如下: <dependency> <groupId>org.springframework</grou ...

  9. SpringBoot接收map类型的参数

    如果某个controller的某个接口的参数特别多,也可以使用map的方式来接收参数,接收之后使用get方法获取即可. 1)get请求方式,定义map接收方式 @RequestParam(requir ...

随机推荐

  1. 如何编写一个Systemd Service(转)

    转自 https://segmentfault.com/a/1190000014740871 0x01 什么是Systemd Service Systemd 服务是一种以 .service 结尾的单元 ...

  2. ES6模版字符串

    传统的 JavaScript 语言,输出模板通常是这样写的(下面使用了 jQuery 的方法). $('#result').append( 'There are <b>' + basket ...

  3. Java程序进行调优及监控

    Java 应用性能的瓶颈点非常多,比如磁盘.内存.网络 I/O 等系统因素,Java 应用代码,JVM GC,数据库,缓存等.笔者根据个人经验,将 Java 性能优化分为 4 个层级:应用层.数据库层 ...

  4. django实战(二)--带多字段模糊查询的分页(也是不容易)

    上节我们实现了分页功能,这节我们要实现对模糊查询后的结果进行分页.(引入了bootstrap框架) urls.py from django.urls import path from . import ...

  5. 深入学习OpenCV中图像灰度化原理,图像相似度的算法

    最近一段时间学习并做的都是对图像进行处理,其实自己也是新手,各种尝试,所以我这个门外汉想总结一下自己学习的东西,图像处理的流程.但是动起笔来想总结,一下却不知道自己要写什么,那就把自己做过的相似图片搜 ...

  6. python]用eval强制将字符串转换为字典变量时候出错:NameError: name 'null' is not defined[python]用eval函数 字符串转dict

    本博客已搬家至个人网站 在路上 - On the way 下面的 技术 分类. 你可以通过点击 更新帖子 [已解决]Python中,用eval强制将字符串转换为字典变量时候出错:NameError: ...

  7. 2019-11-29-win10-UWP-Controls-by-function

    原文:2019-11-29-win10-UWP-Controls-by-function title author date CreateTime categories win10 UWP Contr ...

  8. mvc控制器接收ajax传送的数据

    视图层中ajax传数据 $.ajax({ type: "post",//提交方式 data: { complay_arry: complay_arry, site_arry: si ...

  9. 前端跨域之Jsonp实现原理及.Net下Jsonp的实现

    jsonp的本质是通过script标签的src属性请求到服务端,拿到到服务端返回的数据 ,因为src是可以跨域的.前端通过src发送跨域请求时在请求的url带上回调函数,服务端收到请求时,接受前端传过 ...

  10. 一、NodeJS入门——准备工作(1)——NodeJS的安装

    目录 1.介绍 2.nodejs下载 3.nodejs安装 4.nodejs的简单实用 5.nodejs的经典入门:hello world 6.总结 1    介绍 这是一系列的内容主要是关于我在学习 ...