- Убедитесь, что ваша форма относится к области запроса, а не к сессии
- Используйте LazyList .
Например:
private List<PropertyContact> contactsList = LazyList.decorate(new ArrayList<PropertyContact>(), PropertyContact.PROPERTY_CONTACT_FACTORY);
public static final Factory PROPERTY_CONTACT_FACTORY = new Factory() {
@Override
public Object create() {
return new PropertyContact();
}
};
Затем вы можете отобразить / отредактировать список в вашем JSP следующим образом:
<c:forEach items="${profileForm.contactsList}" var="contact" varStatus="contactSta">
<html:hidden styleClass="contact-id" property="contactsList[${contactSta.index}].id"/>
</c:forEach>
Если вы хотите добавить элементыв список, убедитесь, что вы установили индекс выше, чем максимальный.Например, если мой список содержит 3 элемента, новый (четвертый) будет выглядеть следующим образом: (помните, что список основан на нулевом индексе)
<input style="hidden" styleClass="contact-id" property="contactsList[3].id"/>
При отправке формы любой элемент списка удаляетсяустановит ноль в определенном индексе.Например, допустим, пользователь удаляет 2-е элементы, которые я увижу на сервере:
contactsList.get(1) == null;//remember that list are zero-index based