java list能作为入参吗_springmvc 不支持 List 对象作为 方法的参数

springmvc 不支持 复杂对象的 list 或者 数据对象作为参数的。 只能是 写一个 VO了

` 这样是不可以的 @RequestMapping("/add") public void add(Model model,List sysRole){

`

但是如果是基本的类型是可以的 ` 说了那么多基础类型和引用类型区别,最主要的一点就是基础类型是没有成员变量的,基础类型可以直接是a=x,而引用类型的值大多需要a.b=x才可以得到,那么获取基础类型的集合参数是最容易的,比如你有个方法是需要获取一个int的数组或者list列表,直接在页面上通过同名的input框就可以办到了

后台获取

@RequestMapping("/add") public void getParmas(String[] titleName)

`

为什么不行?

一些网友的解释是这样的

那把这个参数封装到一个对象中,也只能是同setter方法,那问题的关键是如何找到这个setter 方法?肯定是setName中的name和request中的name对应。这才能找到。你想,如果你单纯接收一个list参数,list虽然有get和set方法,但是没有名字呀,只能根据数组下标来判断参数位置。所以只能通过第二种方法进行参数传递

可是我想了想了,感觉不对啊。 如果我是springmvc 开发者,我如果只知道了 List 的加入类型了,为什么 不能通过反射 对应的放入 对象里面? 不合理啊。

###坑 我自己测试了一下。发现网络上面随便的百度的还是有点坑的。

@RequestMapping("/add") public void getParmas(List titleName)

我发现这样的写法还是会报错的。 而 String[] titleName 是可以的。

###正常的理解方式 为什么 string 类型的 List 不可以,而 String[] 却可以的? 而且本来 本来 前端传过来的参数,类型默认就是 string 类型,

其实就是 list 的问题 如果单纯从报错的角度来看 Could not instantiate bean class [java.util.List]: Specified class is an interface

它确实list 是一个接口而不是list 实现类。因此也是可以知道原因了. 我认为是 , List> 的类型 对应 springMVC 来说,是不能准确获取到的, List 对应 springmvc 处理来说,它是 List> 也就是泛型,不知道具体是什么类型。 因为 springmvc 的调用controller的方法的方式是 通过反射来 调用的。 同理 Long[] 可以就是 已经知道类型是 Long 了,也就是 可以的。

也就是 基本类型和 string的 数组 对象是可以的。复杂的 数组对象就不行了。

转载至链接:https://my.oschina.net/u/2419285/blog/1829363

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值