我需要这个控制器:
@RequestMapping("/path/to/my/app")
public String process(List<JavaBean> javaBeans){
// Do something with the list
}
在客户端,我需要手动创建用户操作列表,如此
<form action="/path/to/my/app">
<input name="javaBeans[0].field1"/>
<input name="javaBeans[0].field2"/>
<input name="javaBeans[0].field3"/>
<br/>
<input name="javaBeans[1].field1"/>
<input name="javaBeans[2].field2"/>
<input name="javaBeans[3].field3"/>
<!-- and so forth -->
</form>
我的主要问题是我在控制器中收到空列表。我必须将其包装在另一个javabean中以使代码工作。喜欢以下
public class BeanWrapper{
private List<JavaBean> javaBeans;
// Getter and setter
}
并在控制器中
@RequestMapping("/path/to/my/app")
public String process(BeanWrapper wrapper){
List<JavaBean> list = wrapper.getJavaBeans();
// Do something with the list
}
此版本有效,但我必须不必要地将我的列表包裹在一个对象周围。有办法吗?
提前致谢。
答案 0 :(得分:0)
你可以试试这个:
public String process(@RequestParam("javaBeans[]") List<JavaBean> javaBeans) {
<强>更新强>
Spring默认绑定目前不支持使用索引(javaBeans[1]
)的语法。如评论中所述,您可以使用@RequestBody
注释来解决此限制。
public String process(@RequestBody List<JavaBean> javaBeans)
这需要POST
请求,要么以不同的格式(例如JSON)发送数据,要么实现自己的消息转换器。