Как опубликовать массив пользовательских объектов с отсутствующими записями в действии Struts2
Табличные входы Это предлагает использовать XWorkList
вместо ArrayList
, когда размер массива неизвестен и между ними есть пробелы.
Но XWorkList
не является универсальным и не имеет пустого конструктора, согласно документации
Мой вопрос как использовать XWorkList
или есть какой-нибудь способ представить список бинов с отсутствующими в списке элементами?
Образец HTML:
<input name="lst[0].name"/>
<input name="lst[3].name"/>
<input name="lst[4].name"/>
2 ответа
Это расширяется ArrayList
и имеет конструктор, который принимает Class
, Таким образом вы бы изменили:
List<String> foo = new ArrayList<String>();
foo.add("bar");
foo.add("");
foo.add("");
foo.add("foobar");
foo.add("barfoo");
в:
List<String> foo = new XWorkList(String.class);
foo.add("bar");
foo.add(3, "foobar");
foo.add(4, "barfoo");
List
Контракт представляет собой заказную коллекцию. У него не может быть пропавших без вести. Около XWorkList
это просто другая реализация списка, способная создавать новые элементы для указанного индекса, заполняя пробел для обязательных элементов. Что сказано для add(int, Object)
Вставляет указанный элемент в указанную позицию в этом списке. Смещает элемент, находящийся в данный момент в этой позиции (если есть), и любые последующие элементы вправо (добавляет один к их индексам). Этот метод гарантированно работает, так как он создаст пустые бины, чтобы заполнить разрыв между текущим размером списка и запрошенным индексом, чтобы позволить элементу быть установленным.
Другим подходом для создания новых bean-компонентов в списке является использование преобразования типов. Или используя аннотации, как в этом ответе.