SpringMVC接收数组/集合参数

使用@RequestParam注解

前端:

Controller:

这里用List集合、数组都可以接收。GET/POST请求不限。

XHR:

不使用@RequestParam注解

比如这个例子:

浏览器访问:

控制台输出:

接收复杂对象List集合

这里有一个User类:

如果前台有多个User传过来,那么可以这么做:

封装一个类,属性为List<User>:

Controller:

浏览器请求:

但是要注意一个比较坑的地方,如果访问参数中索引直接到20:

会直接跳转到索引为20,而且中间全是null,这是一个比较坑的地方,所以索引最好是连续的。

接收Set集合

SpringMVC对Set集合的绑定不是很友好,因为在SpringMVC中想要接收Set参数,需要首先对这个Set集合进行初始化,而且Set集合的长度要与参数中的长度一致。即比如我想接收Set<User> userSet,那肯定需要封装一个类UserSetForm,其中一个属性是Set<User> userSet,那么接收参数为UserSetForm。而由于接收的Set需要初始化,所以需要在UserSetForm的构造中初始化这个Set<User>,所以这个Set<User>在new出来了之后还要add几个new User(),但是Set集合既然使用了,主要作用肯定又是去重,那就必然要重写User类的hashCode()和equals()方法,这样就造成Set<User>在add new User()的时候一只只能存一个User,所以就很矛盾。

具体可以参这部分源码:

所以建议不要使用Set集合接收参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值