SpringMVC接收数组/集合参数

使用@RequestParam注解

前端:

SpringMVC接收数组/集合参数_第1张图片

Controller:

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

XHR:

不使用@RequestParam注解

比如这个例子:

SpringMVC接收数组/集合参数_第2张图片

浏览器访问:

控制台输出:

接收复杂对象List集合

这里有一个User类:

SpringMVC接收数组/集合参数_第3张图片

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

封装一个类,属性为List

SpringMVC接收数组/集合参数_第4张图片

Controller:

SpringMVC接收数组/集合参数_第5张图片

浏览器请求:

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

SpringMVC接收数组/集合参数_第6张图片

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

接收Set集合

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

具体可以参这部分源码:

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

你可能感兴趣的:(spring,mvc)