spring mvc 控制器方法传数组对象的一些经验

来源:互联网 发布:zara淘宝官方旗舰店 编辑:程序博客网 时间:2024/06/08 06:09

因为项目需要在一个表单里面提交多个对象,比较好的做法就是直接在控制器方法参数里传一个数组。

由于Spring mvc框架在反射生成控制方法的参数对象的时候会调用这个类的getDeclaredConstructor方法来获得构造函数, 但是一直报NoSuchMethodException的异常

根据这个方法的jdk文档,这个类是一个数组对象时,这个方法会抛出java.lang.NoSuchMethodException,因为接口、数组类、void、基本类型没有构造函数。

同事后来给我支了两招,使用ArrayList来代替原生数组,或者使用DTO来封装一下原生的数组,Spring mvc就能够找到这个参数的构造函数了。

@RequestMapping(value={"xxx"}, method = RequestMethod.POST)public String foo(ArrayList<Bar> bars){param.get(0);}class BarArray{Bar[] bars;public Bar[] getBars(){return bars;}public void setBars(Bar[] bars){this.bars = bars;}}@RequestMapping(value={"xxx"}, method = RequestMethod.POST)public String foo(ArrayList<Bar> bars){param.get(0);}
前台的话可以通过bars[0].name=xxx 这样的方式来提交表单。

还有一点就是基本类型的数组不需要这样做,因为不需要构造函数。

0 0
原创粉丝点击