Я собирался добавить это в качестве комментария к посту Нимы Гедшарафи. Путь к '' Разделить по горизонтали '' 'и' '' Разделить по вертикали '' 'выглядит как' '' Окно> Вкладки редактора> Разделить ... '' в версии. 2017.1.4
Вы можете использовать следующее
public class InvoiceController extends SimpleFormController {
protected void initBinder(HttpServletRequest request, ServletRequetDataBinder binder) throws Exception {
binder.registerCustomEditor(List.class, "lineItems", new CustomCollectionEditor(List.class)() {
protected Object convertElement(Object lineItem) {
LineItem li = (LineItem) lineItem;
// StringUtils is a jakarta Commons lang static class
return (StringUtils.isBlank(li.getProductName())) ? null : li;
}
});
}
}
Затем в методе onBind удалите пустые ссылки в соответствии с:
protected void onBind(HttpServletRequest request, Object command, BindException bindException) throws Exception {
Invoice invoice = (Invoice) command;
invoice.getLineItems().removeAll(Collections.singletonList(null));
}
С уважением,
Я обнаружил, что также необходимо оформить GrowthList, чтобы избежать некоторых ошибок при добавлении / настройке элементов в JSP. (Также был создан специальный SpringList, который в основном выполняет двойное украшение.)
lineItems = GrowthList.decorate(ListUtils.lazyList(new ArrayList<LineItem>(), FactoryUtils.instantiateFactory(LineItem.class)));
Я согласен. Проблема, безусловно, заключается в удалении элементов.
Что вы можете сделать, так это использовать синтаксис spring marker в html. Поэтому, если вы удалите элемент (например, с индексом 2) из списка с помощью javascript, вы затем отметите этот индекс с помощью:
<input type="hidden" name="_lineItems[2]">
Затем, когда форма будет отправлена, Spring увидит маркер и поместит пустой элемент (на основе фабрика lazylist) для lineItems 2 вместо того, чтобы игнорировать его.
Я реализовал руководство, которое может помочь вам решить эту проблему с помощью jQuery на стороне клиента и списка Springs AutoPopulation для формирования объектов поддержки.
http://eggsylife.co.uk / 2009/11/30 / spring -forms-dynamic-lists-and-ajax /
РЕДАКТИРОВАТЬ Ссылка из веб-архива https://web.archive.org/web/20160729163958/http://eggsylife.co.uk/2009/11/30/spring-forms-dynamic-lists-and-ajax/