在表單支持方法中,將列表設置爲LazyList,它是apache commons集合庫的一部分。
Factory notificationFactory = new Factory() {
public Object create() {
SomeTO rtVl = new SomeTO();
return rtVl;
}
};
myFormBacking.setSomeTOs(LazyList.decorate(myFormBacking.getSomeTOs));
那麼你的表格上,當您將數據發送到服務器,你可以,如果你使用
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
那麼你可以簡單地去做到這樣
<input name="someTOs[0].name" value="" />
和。
<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;
}
這裏的功能是在上採用剪枝功能的提交(前保存)
wrapper.setSomeTOs(pruneList(wrapper.getSomeTOs(),Integer.parseInt(request.getParameter("expectedLength)));
你能解釋一下我,用什麼形式的代碼?我不明白command.someTOs [0] .someProperty =「YES」; 對不起,瘋狂的問題) – user305091 2010-03-30 13:27:35
Hhehe,對不起......在我發佈答案後,我看到了屬性名稱和Id。讓我爲你解決它 – Zoidberg 2010-03-30 13:41:03