查看此问题将对象绑定到Set集合中
您需要使用其他类型的集合。我建议使用列表而不是地图。当您从表单发送带有以下名称的参数时:
name="books[0].book_id"
SpringMVC将查找名为books的属性(为您设置Set),然后它将尝试通过执行books.get(0)来获取第一个元素。Set没有得到订单,因为Set没有订单。
对于列表的实现,可以使用AutoPopulatingList。它是一个惰性列表的实现,如果不存在该对象,它将创建一个对象。例如,如果您调用books [0]
.id,并且尚未在列表的位置0添加书,则它将抛出NullPointerException,但是如果您使用AutoPopulatingList,它将创建一个新的Book并将其添加到该位置。该职位是空的。
public List<Book> books = new AutoPopulatingList<Book>(new ElementFactory<Book>() { @Override public Book createElement(final int index) throws ElementInstantiationException { //call the constructor as you need return new Book(); } });如果要使用Book的默认构造函数(即Book())实例化它,则可以使用如下语法:
public List<Book> books = new AutoPopulatingList<Book>(Book.class);



