Spring@MVC如何从请求参数获取JavaBean列表,而无需将列表包装到对象中

Spring@MVC如何从请求参数获取JavaBean列表,而无需将列表包装到对象中,spring,spring-mvc,data-binding,Spring,Spring Mvc,Data Binding,我需要这个控制器: @RequestMapping("/path/to/my/app") public String process(List<JavaBean> javaBeans){ // Do something with the list } @RequestMapping(“/path/to/my/app”) 公共字符串进程(列出javaBeans){ //对清单做点什么 } 在客户端,我需要手动创建用户操作列表,如下所示 <form action="/p

我需要这个控制器:

@RequestMapping("/path/to/my/app")
public String process(List<JavaBean> javaBeans){
    // Do something with the list
}
@RequestMapping(“/path/to/my/app”)
公共字符串进程(列出javaBeans){
//对清单做点什么
}
在客户端,我需要手动创建用户操作列表,如下所示

<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
}
public-classbeanwrapper{
私有列表javaBeans;
//接二连三
}
和在控制器中

@RequestMapping("/path/to/my/app")
public String process(BeanWrapper wrapper){
    List<JavaBean> list = wrapper.getJavaBeans();
    // Do something with the list
}
@RequestMapping(“/path/to/my/app”)
公共字符串进程(BeanRapper包装器){
List=wrapper.getJavaBeans();
//对清单做点什么
}
这个版本可以工作,但我必须不必要地将我的列表环绕在一个对象上。附近有路吗

提前感谢。

您可以尝试以下方法:

public String process(@RequestParam("javaBeans[]") List<JavaBean> javaBeans) {

这需要一个
POST
请求,或者以不同的格式(例如JSON)发送数据,或者实现您自己的消息转换器。

为什么不使用spring:bind标记或spring form标记?我可以很好地做到这一点,但列表中的项目数量可以根据用户的操作在客户端上增加或减少。无论如何,我需要弄清楚如何使它在纯html中工作。另一方面,我很好奇。谢谢你花时间回复。然而,我收到了这条消息,根据这种情况,必需的列表参数“javaBeans[]”不存在。这种绑定不受支持。太糟糕了,这是因为索引。这一点已经讨论过很多次了,目前还没有其他解决方案。如果您向服务器发送JSON(例如通过AJAX),则应该能够使用
公共字符串进程(@RequestBody List javaBeans){
。您的解决方案可能看起来不必要,但它是最简单的。也许Spring 4将提供一个更好的解决方案。正如我所说,这是一个可悲的过度。请您更新答案,因为根据您的评论,没有解决方案存在,以便我可以接受这一答案。
public String process(@RequestBody List<JavaBean> javaBeans)