SpringMVC用List接收请求参数

spring MVC后台处理数组对象。

如下两种方法是相同的,但是参数好像只能是基本数据类型,不能是对象数组或者对象list(有待考证)

接收List<String>  list = “a,b,c,d”

  /**

         * 接收List<String>  list = “a,b,c,d”

         * 1、Request Parameters中list=a,b,c

         * 2、必须写上@RequestParam("list")

         */

  1.  public String hey(String[] list) {}

       /**

         * 接收数组 list = “a,b,c,d”

         * 1、Request Parameters中list=a,b,c 即可成功接收

         */

    2 public String hi(@RequestParam("list") List<String> list) {}

 

接收list对象写法如下所示,

使用JSON格式数据,如[{"a":"a","b":"b"}] 放在RequestBody中传递,

RequestHeader中需要有 Content-Type: application/json;charset=utf8

    public String test(@RequestBody List<ForListReceive> list) {}

    public String test(@RequestBody ForListReceive[] list) {}

list类型的参数,接收前台的数组值,实验了一下,结果还真可以。
不用绑定到对象里面。
当然我这个是前台传递了个包含的是string的数组到后台,然后,后台用list来接收。
具体如下:

前台代码:

  1.  
    //发送请求到后台,带数组形式的数据。
  2.  
    function testList() {
  3.  
    var data = getTreeViewCheckedData();
  4.  
    $.ajax({
  5.  
    url: APP_NAME + "xxxx/testList",
  6.  
    data: {
  7.  
    list:data
  8.  
    },
  9.  
    dataType: "json",
  10.  
    success: function (data) {
  11.  
    }
  12.  
    });
  13.  
    }
  14.  
    //获得数据---以数组的形式存储
  15.  
    function getTreeViewCheckedData() {
  16.  
    var checkedData = [];
  17.  
    $('#shareSetting').find('ol.bonsai input:checkbox:checked').each(function () {
  18.  
    checkedData.push($(this).val())
  19.  
    }
  20.  
    );
  21.  
    return checkedData;
  22.  
    }

后台代码:

  1.  
    //方式一:用list接收前台的数组参数。
  2.  
    @RequestMapping(value = "/testList")
  3.  
    @ResponseBody
  4.  
    public JsonResult testList(@RequestParam(required = false, value = "list[]") List<String> list){
  5.  
    return new JsonResult(true,"ok ",null);
  6.  
    }
  7.  
     
  8.  
    //方式二:用数组接收前台的数组参数。然后转化成list。
  9.  
    @RequestMapping(value = "/testList")
  10.  
    @ResponseBody
  11.  
    public JsonResult testList(@RequestParam(required = false, value = "list[]") String[] list){
  12.  
     
  13.  
    List<String> newList = Lists.newArrayList(Arrays.asList(list));
  14.  
    return new JsonResult(true,"ok ",null);
  15.  
    }

注意:

value = "list[],这个不能省略,这个list要和前台的传入参数一样

@RequestMapping(value="/getList", method= RequestMethod.GET)
@ResponseBody
public String getList (@RequestParam("list") List<String> list) {
return "Request successful. Post param : Map - " + list;
}

@RequestMapping(value="/getArray", method= RequestMethod.GET)
@ResponseBody
public String getArray (String[] list) {
return "Request successful. Post param : Map - " + list;
}

============================================================================================




@RequestMapping("/hello")

    public String test(@RequestBody List<ForListReceive> list) {

        /**

         * 接收List的条件

         * 1、使用JSON格式数据,如[{"a":"a","b":"b"}] 放在RequestBody中传递

         * 2、RequestHeader中需要有 Content-Type: application/json;charset=utf8

         * 3、需要在参数前加上@RequestBody

         */

 

        System.out.println(list.get(0).getA());

        return list.size()+":"+name;

}

 

@RequestMapping("/hello")

    public String test(@RequestBody ForListReceive[] list) {

        /**

         * 接收List的条件

         * 1、使用JSON格式数据,如[{"a":"a","b":"b"}] 放在RequestBody中传递

         * 2、RequestHeader中需要有 Content-Type: application/json;charset=utf8

         * 3、需要在参数前加上@RequestBody

         */

 

        System.out.println(list.get(0).getA());

        return list.size()+":"+name;

    }

 

 

    @RequestMapping("/hi")

    public String hi(@RequestParam("list") List<String> list) {

        /**

         * 接收List<String>  list = “a,b,c,d”

         * 1、Request Parameters中list=a,b,c

         * 2、必须写上@RequestParam("list")

         */

        System.out.println(list.get(0));

        return list.size()+"";

    }

 

    @RequestMapping("/hey")

    public String hey(String[] list) {

        /**

         * 接收数组 list = “a,b,c,d”

         * 1、Request Parameters中list=a,b,c 即可成功接收

         */

        System.out.println(list[0].toString());

        System.out.println(list[1].toString());

        return list.length+"";

    }



原文地址:https://www.cnblogs.com/lyf906522290/p/13947018.html