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来接收。
具体如下:
前台代码:
-
//发送请求到后台,带数组形式的数据。
-
function testList() {
-
var data = getTreeViewCheckedData();
-
$.ajax({
-
url: APP_NAME + "xxxx/testList",
-
data: {
-
list:data
-
},
-
dataType: "json",
-
success: function (data) {
-
}
-
});
-
}
-
//获得数据---以数组的形式存储
-
function getTreeViewCheckedData() {
-
var checkedData = [];
-
$('#shareSetting').find('ol.bonsai input:checkbox:checked').each(function () {
-
checkedData.push($(this).val())
-
}
-
);
-
return checkedData;
-
}
后台代码:
-
//方式一:用list接收前台的数组参数。
-
-
-
public JsonResult testList(
-
return new JsonResult(true,"ok ",null);
-
}
-
-
//方式二:用数组接收前台的数组参数。然后转化成list。
-
-
-
public JsonResult testList(
-
-
List<String> newList = Lists.newArrayList(Arrays.asList(list));
-
return new JsonResult(true,"ok ",null);
-
}
注意:
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+"";
}