В методе поддержки формы установите список в 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;
}
Вот использование функции обрезки при отправке (перед сохранением)
wrapper.setSomeTOs(pruneList(wrapper.getSomeTOs(),Integer.parseInt(request.getParameter("expectedLength)));