SpringMVC接收数组或列表参数

1. 前言

有时候前端请求发送的数据是批量的,此时就要求后端去处理请求时,获取这些批量的请求参数。一般批量的请求参数在 Java 中是以数组或者集合的形式接收的,而 SpringMVC 提供了接收和解析数据和集合参数类型的机制

本文主要是记录 SpringMVC 中当前台传过来数组的时候,如何把前台传过来的数据封装到 Controller 层方法的形参中

在了解下面参数如何传递前先记住两个结论

  • Ajaxapplication/x-www-form-urlencoded 编码格式上传数据,必须使用 JSON 对象传递数据,后台需要使用 @RequestParam 或者 HttpServletRequest 来接收数据
  • Ajaxapplication/json 编码格式上传数据,必须使用 JSON 字符串传递数据,后台需要使用 @RquestBody 标识参数来获取数据,使用 Map 或者实体对象来接收数据,如果只单单是接收一个数组,可以使用 List 来接收数据

2. SpringMVC 接收数组参数

2.1. 前台数据的发送

$(function () {
    var obj = {};
    obj.name = "李四";
    obj.nums = [1,2,3];
    $.ajax({
        url: "/param/test1",
        type: "POST",
        contentType: "application/x-www-form-urlencoded",
        data: obj,
        dataType: "json",
        success: function(data){
        }
    })
})

2.2. 后台接收数据

  • 后台接收数据时的形参必须和前台表单里的字段名一样
  • 如果不一致要使用 @RequestParam 声明,数组必须声明
@RequestMapping(value = "/test1", method = RequestMethod.POST)
@ResponseBody
private String Test1(String name, @RequestParam("nums[]") Integer[] nums) {

	System.out.println(name);
    for(int i=0;i<nums.length;i++){
    	System.out.println(nums[i]);
    }
    return "success";
}

3. SpringMVC 接收 List 列表参数

3.1. 前台数据的发送

$(function () {
    var obj = [];
    var user1 = {"name":"李四","age":1};
    var user2 = {"name":"网四","age":23};
    obj.push(user1);
    obj.push(user2);
    $.ajax({
        url: "/param/test1",
        type: "POST",
        contentType: "application/json",
        data: JSON.stringify(obj),// 转换为JSON
        dataType: "json",
        success:function(data){
        
        }
    })
})

3.2. 后台接收数据

@RequestMapping(value = "/test1", method = RequestMethod.POST)
@ResponseBody
private String Test1(@RequestBody List<User> users) {//参数名任意
	System.out.println(users);
    return "success";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值