spring报错:Failed to instantiate [java.util.List]: Specified class is an interface

我操这什么鸡巴玩意
出了这个问题,前台发过来一个list,spring的controller直接接收list报出了这个问题,参数转换错误,转不成list,那他喵的悲催了。

代码示例如下,spring接受的参数转换不成list

@RequestMapping(value = "/updateXXXXX", method = RequestMethod.POST)
    public String updateXXXXX(List<Bean> beanList , Model model, HttpServletRequest request) {
    //sdfgsdfgsfgasertfgsdfg
    }

controller中参数List内封装的不是基本数据类型,而是一个对象,springMVC源码获取前台的参数是:request.getParameter(" ")来接收参数的,这样的话,封装参数时就出问题了。

解决方案
1、list外面再包一层就行了,参数这么传
Bean 里面包着原来的
private List XXX;

@RequestMapping(value = "/updateXXXXX", method = RequestMethod.POST)
    public String updateXXXXX(@Validated  Bean bean , Model model, HttpServletRequest request) {
    //sdfgsdfgsfgasertfgsdfg
    }

2、或者前台的参数弄成json,后台直接string接收
后台springmvc里用@ RequestBody String 方式接收,然后用fastjson转换成数组就可以了。

从网上查到还有这种方式,还没试过
spring 3.2 直接支持泛型集合,如List Map<String, Sample>等集合泛型
具体步骤
1 要配置驱动注解mvc:annotation-driven/ ,里面注册了会把json绑定到list的"Bean实例"。
2 前台传json数组,后台直接@RequestBody List list接收就可以。
(这种方法还没测试过,只是在查这个问题的时候看到这种方式。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值