首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SpringMVC后台接收list类型的数据的实现方式

一、背景

最近在做一些东西的时候,遇到一个需要Springmvc后台接收list类型数据的需求,几经辗转才完美解决了这个问题,今天记下来方便以后使用,也分享给需要的小伙伴们~

二、实现方式

对于Java中的基本对象,如:Integer、String、long等有以下几种实现方式:

实现方式一

前端页面

后台接收

注意:这种方法只适用于POST方法提交,(上面代码中标红的是必不可少的代码)如果使用get方法会出现如下图所示的错误

这是因为get方式的参数中的双引号会被编码,导致传到后台的不再是json串格式,所以解析出错。

实现方式二

前端页面

后台接收,指定参数名必须以数组方式,如:@RequestParam("datas[]")

通过ArrayList接收

通过数组进行接收

注意:

这种方式对于get和post方式的请求同样都适用.

以上两种实现方式传到后台的数据不能为null,否则会报Http 400错误。

实现方式三

前端页面

后端代码

通过数组接收

通过List接收

这种方式即使没有选中任何复选框进行提交,也不会报错!

对于想要前端传自定义对象数组到后端,以上的方式就不适用了,那么解决办法是什么呢?

ajax请求中设置contentType:"application/json;charset=utf-8"

ajax请求中设置data:JSON.stringify(dataList)

后端Controller种用@RequestBody YourObject[] data进行接收,并且只能用数组接收.

如果你有更好的实现方式,希望可以拿来分享。。。。

三、总结

实现方式一只对post方法有效,且比较繁琐,不推荐!

实现方式二要求后端接收的时候必须声明参数为数组,但可以使用数组或者list进行接收参数,如:@RequestParam("datas[]"),前端使用data:{"datas":data}或data:{"datas[]":data}都可以!且post和get方法都适用。但是不能传空数组,限制也比较多,也不太推荐。

实现方式三只需要前端传值的时候使用数组的join()方法,为空数组也不会报错,配置简单,要求少,且支持使用数组和list进行接收参数,比较推荐!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180501G1E5EG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券