spring mvc 控制器方法传数组对象的一些经验
2014-07-10 15:49
260 查看
因为项目需要在一个表单里面提交多个对象,比较好的做法就是直接在控制器方法参数里传一个数组。
由于Spring mvc框架在反射生成控制方法的参数对象的时候会调用这个类的getDeclaredConstructor方法来获得构造函数, 但是一直报NoSuchMethodException的异常。
根据这个方法的jdk文档,这个类是一个数组对象时,这个方法会抛出java.lang.NoSuchMethodException,因为接口、数组类、void、基本类型没有构造函数。
同事后来给我支了两招,使用ArrayList来代替原生数组,或者使用DTO来封装一下原生的数组,Spring mvc就能够找到这个参数的构造函数了。
还有一点就是基本类型的数组不需要这样做,因为不需要构造函数。
由于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 这样的方式来提交表单。
还有一点就是基本类型的数组不需要这样做,因为不需要构造函数。
相关文章推荐
- spring mvc 控制器方法传递一些经验对象的数组
- Spring MVC 表单与控制器间model对象映射的一些注意事项
- spring mvc 注解访问控制器以及接收form数据的方式,包括直接接收日期类型及对象的方法
- javascript内置对象数组Array和字符串string的一些方法
- JS数组和对象的一些原生方法(常用API)
- 关于字符串,数组,对象的一些小方法
- javascript:数组对象的一些方法
- Javascript数组对象的方法和属性
- Javascript数组对象的方法和属性
- 对象数组与ArrayList互转的简单方法[摘录]
- ASP javascript Application对象的Contents和StaticObjects做Cache的一些经验
- java中把对象转化为byte数组的方法
- Javascript数组对象的方法和属性
- Javascript数组对象的方法和属性
- 使用一些需要共享对象的一点小经验
- 为javascript中的数组对象添加remove方法
- 处理Clob数据(转)关于oracle中大对象处理的一些方法和实例
- DWR传递对象的一些经验
- C#对象数组排序方法
- 关于对象数据库 DB4O 的一些BUG以及如何应对的方法