在表单支持方法中,将列表设置为 LazyList,它是 apache commons 集合库的一部分。
Factory notificationFactory = new Factory() {
public Object create() {
SomeTO rtVl = new SomeTO();
return rtVl;
}
};
myFormBacking.setSomeTOs(LazyList.decorate(myFormBacking.getSomeTOs));
然后在您的表单上,当您将数据发送到服务器时,您可以这样做
<input name="someTOs[0].name" value="" />
如果你使用
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
那么你就可以走了。
<form:input path="someTOs[0].name" />
在将数据发布到服务器之前,为了使修剪更容易,请设置集合中的元素数量。因此,如果用户添加了 5 个 TO,则在表单中发送该长度值。
现在在服务器上,您必须在保存之前修剪列表。这是修剪的功能
public List<SomeTOs> pruneList(List<SomeTOs> unpruned,int expectedLength){
List<SomeTOs> rtVl = new ArrayList<SomeTOs>();
for (int i = 0; i < unpruned.length && expectedLength; ++i){
rtVl.add(unpruned.get(i);
}
return rtVl;
}
这里是on submit(保存前)中prune功能的使用
wrapper.setSomeTOs(pruneList(wrapper.getSomeTOs(),Integer.parseInt(request.getParameter("expectedLength)));