2 weixin 40158006 weixin_40158006 于 2018.02.14 09:13 提问

SpringMVC对于传入参数是数组形式的参数该怎样处理 20C

先跟大家介绍一下我之前的开发经验。之前做过一个简单查询展示的系统,输入一个人的一些资料,查询符合条件的数据,具体框架大概是这样:
如图,四个查询条件,输入相应的查询条件,会返回符合要求的结果。
图片说明

这是传入后台姓名、客户号、日期等参数的形式;
图片说明

这是后台controller的写法;
图片说明

这是实体类Bean的写法;
图片说明

这是Mapper的写法。
图片说明
现在小弟需要实现一个十分复杂的查询/筛选功能,需要将数据库中符合多个条件的结果全部返回过来。具体的界面是这样的;
图片说明
而对于传输的查询参数,对于同一名称的查询参数可能有多个值,因此查询参数是一个数组:
图片说明
图片说明
如图,像这样的形式,该如何修改后台的Bean、controller和mapper?还请大牛指点指点,谢谢!

3个回答

FenTianShenHuo
FenTianShenHuo   2018.02.14 09:36

后台用request.getParameterValues('roleIds')可以获取到一个String数组的

FenTianShenHuo
FenTianShenHuo 回复SheldorWsy: 感觉你这些条件怎么看都像是单选框比较合适
8 天之前 回复
FenTianShenHuo
FenTianShenHuo 回复SheldorWsy: 后台接收的是name,只有你的同一类CheckBox的name属性相同,后台就能接受这样的数组了
8 天之前 回复
weixin_40158006
weixin_40158006 是在controller里面写吗?另外我用的是checkbox的class和id属性,要改成使用name和value么?
8 天之前 回复
hanxianglu
hanxianglu   2018.02.14 10:19

本来就支持数组参数,你直接在后台接就好了图片说明
查询时传入一个Mapper传一个bean,把数组参数作为bean的一个属性,在mapper.xml 文件里面 in 使用for循环把参数拼起来就好了

rabbit_hog
rabbit_hog   2018.02.14 10:58

Spring MVC本来就支持数组参数,把bean的属性变成String[]类型就OK了。
不过你也可以通过debug看看,如果bean的PRD_NBR,crl_sts 和 end_dte三个属性写成String类型,传进来的参数值是啥样的。我要是没记错的话应该是一个字符串,内容是由数组里每个字符串拼接而成,中间用逗号隔开(例如图片里面的PRD_NBR,传进来的就是"CR026601,CR026101")。这样的好处是写Mapping的时候应该可以直接写成类似where 属性 in (),可以省去循环了
当然你也可以在页面端把这个数组拼接成方便写Mapping的字符串啦

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!