对于像这样的装饰无序列表:
private List<MyListItem> items = LazyList.decorate(new ArrayList(),
FactoryUtils.instantiateFactory(MyListItem.class));
是否必须使用索引号命名表单中的属性?如:
<form:input path="items[1]" />
<form:input path="items[2]" />
为什么我不能像PHP那样提供两个括号?
item[]
因为使用DOM动态创建输入列表会成为处理项目删除的问题......
答案 0 :(得分:1)
就像你问为什么Spring不支持像 item [] 这样的通用模式一样,你也可能会问为什么你的集合没有按照显示的项目的顺序排序。你的表格。请注意:java.util.List 是一个有序集合,因此您必须告诉Spring必须插入列表中的每个项目。
解决方法
1º选项
按如下所示创建AutoPopulatingList
private List<Item> items = new AutoPopulatingList(
new ElementFactory() {
public Object createElement(int index) throws ElementInstantiationException {
/**
* Any removed item will be handled as null.
* So we just remove any nullable item before adding to our List
* By using the following statement
*/
items.removeAll(Collections.singletonList(null));
return new Item();
}
});
2º选项
由于Spring是开源的,因此您可以创建自定义BeanWrapperImpl。在幕后,BeanWrapperImpl负责填充您的bean。接下来,编译您的自定义Spring MVC
答案 1 :(得分:-1)
您可以访问以下变量:
<form:input path="${item[0]}" />
<form:input path="${item[1]}" />
另一种方式是:
<c:forEach items="${items}" var="item">
<form:input path="${item}" />
</c:forEach>