springmvc 接受数组,集合(list,set)类型的参数
2017-03-27 19:08
513 查看
注意:形参为集合时, 前台传递的一定是数组的形式(前台集合的形式没有测试)的值, 否则形参接受不到值。
形参为数组时,前台传递数组形式时,形参是接受不到数据的。可以通过get请求, 设置完成数组形参的设值, 如: xxxxx?name=a&name=b
一:前台直接传递到controller数组。
1. springmvc框架中请求参数会自动绑定到方法的形参中。 但是当我们的形参是一个数组、集合(list, set)时, 参数是不能绑定成功的。
但是可以通过 添加属性@RequestParam(value="参数名[]"),来完成绑定的。
js:
Java:@RequestParam(value="name[]", required=false), 该注解的required默认值是true, 置为false,排除参数为必须参数的限制
输出结果:
name0,name1,name2,name3,name4,
address0,address1,address2,address3,address4,
test2, // 只输出了一个值。 证明json数据相同的key,会被后来者覆盖
name[].size:5; address[].size:5; test[].size:1
二、通过设置相同name值的input表单, 造成到controller时该参数为数组
html代码:
Java代码:
输出结果:
test1,test2,test3,test4,
test[].size:4
对于该种情况的数组, 通过观察url地址,会发现都是以tesst为key,所以很容易构造此类数据:
http://localhost:8080/test/data/array?test=test1&test=test2&test=test3&test=test4
形参为数组时,前台传递数组形式时,形参是接受不到数据的。可以通过get请求, 设置完成数组形参的设值, 如: xxxxx?name=a&name=b
一:前台直接传递到controller数组。
1. springmvc框架中请求参数会自动绑定到方法的形参中。 但是当我们的形参是一个数组、集合(list, set)时, 参数是不能绑定成功的。
但是可以通过 添加属性@RequestParam(value="参数名[]"),来完成绑定的。
js:
$(function(){ $("#btn").click(function(){ var name = []; var address = []; for(var i = 0; i<5; i++){ name.push("name"+i); address.push("address"+i); } $.ajax({ url:"/test/data/array", data: {"name":name, "address":address, "test":"test1", "test":"test2"}, dataType:"json", success: function(data){ alert(data); } }); }); });
Java:@RequestParam(value="name[]", required=false), 该注解的required默认值是true, 置为false,排除参数为必须参数的限制
@RequestMapping("array") @ResponseBody public Object array(@RequestParam(value="name[]", required=false) String[] name, @RequestParam(value="address[]", required=false) List<String> address, // 该list可以替换为set测试 String[] test) { for (String attr : name) { System.err.print(attr+","); } System.err.println(); for (String attr : address) { System.err.print(attr+","); } System.err.println(); for (String attr : test) { System.err.print(attr+","); } System.err.println(); System.err.println("name[].size:"+name.length +"; address[].size:"+address.size() + "; test[].size:"+test.length); return "xxxx"; }
输出结果:
name0,name1,name2,name3,name4,
address0,address1,address2,address3,address4,
test2, // 只输出了一个值。 证明json数据相同的key,会被后来者覆盖
name[].size:5; address[].size:5; test[].size:1
二、通过设置相同name值的input表单, 造成到controller时该参数为数组
html代码:
<form action="/test/data/array"> <input name="test" value="test1"/><br /> <input name="test" value="test2"/><br /> <input name="test" value="test3"/><br /> <input name="test" value="test4"/><br /> <input type="submit" value="sub"> </form>
Java代码:
@RequestMapping("array") @ResponseBody public Object array(@RequestParam(value="name[]", required=false) String[] name, @RequestParam(value="address[]", required=false) List<String> address, String[] test) { for (String attr : test) { System.err.print(attr+","); } System.err.println(); System.err.println("test[].size:"+test.length); return "xxxx"; }
输出结果:
test1,test2,test3,test4,
test[].size:4
对于该种情况的数组, 通过观察url地址,会发现都是以tesst为key,所以很容易构造此类数据:
http://localhost:8080/test/data/array?test=test1&test=test2&test=test3&test=test4
相关文章推荐
- springMVC 参数传递之:数组,Map,List,Set以及自定义复杂类型参数
- springmvc接收前台(可以是ajax)传来的数组list,map,set等集合,复杂对象集合等图文详解
- [置顶] springmvc接收前台(如ajax)传来的数组list,set等集合图文详解
- springmvc中的对象、数组、集合类型的参数绑定
- springmvc接收前台(可以是ajax)传来的数组list,map,set等集合,复杂对象集合等图文详解
- springmvc中,在业务控制方法中,收集数组参数,收集List集合包含javabean
- springmvc接收前台(可以是ajax)传来的数组list,map,set等集合,复杂对象集合等图文详解
- List类型与String数组、Set集合互相转换
- springMVC怎么接受前台传过来的多种类型参数?(集合、实体、单个参数)
- SpringMVC数组、集合类型参数绑定与异常处理器
- springMVC学习(6)-包装pojo类型、数组、list、Map类型参数绑定
- springmvc接收前台(可以是ajax)传来的数组list,map,set等集合,复杂对象集合等图文详解
- java类集合 Set ,List ,Map ,数组之间相互转化
- 《Java编程思想》之对象的集合(数组、List、Set、Map)二
- 7.当形参,返回值类型是JavaBean式的复合类,List集合,数组等时:客户端执行wsdl2java
- JSTL遍历数组,List,Set,Map等集合
- JAVA 集合List,数组,Set,Map,直接的相互转换
- ASP.NET MVC3如何用JQuery传递数组(集合)类型参数给JsonResult Action
- jquery实现数组array、集合list、json类型的分页
- 3.当形参,返回值类型是JavaBean式的复合类,List集合,数组等时:服务端业务逻辑层接口