У меня есть ListView
, который я использую для добавления нескольких строк с элементами формы (ввод текста, выборки и т. Д.), Которые соответствуют свойству модели, представляющей собой список элементов.Когда форма загружается впервые, элементы инициализируются как новые экземпляры этого класса.Казалось, что Wicket не сможет их различить, если я не добавлю явно значения в свойство этого объекта.Он изменяет значение только тогда, когда я изменяю что-то в последней строке ListView
, а когда это происходит, он меняет все из них, как если бы они были одним и тем же объектом.
Например:
Arrays.asList(new String(), new String(), new String());
против
Arrays.asList("a", "b", "c");
Калитка изменяет значения для отдельной строки только тогда, когда список, переданный в ListView
, реализован вторым способом.
Вот упрощенный пример кода, который я использую:
WebMarkupContainer container = new WebMarkupContainer("container");
ListView<String> listView = new ListView<String>("propertyListView", model.getObjectsList()) {
@Override
protected void populateItem(final ListItem listItem) {
listItem.add(new TextField<String>("string", new PropertyModel<>(listItem.getModelObject(), "stringField")));
}
};
listView.setReuseItems(true);
container.add(listView);
form.add(container);
Мой вопрос такой: есть ли какой-то интерфейс, который я могу реализовать, чтобы мне не приходилось использовать"обман" инициализации объектов с различными значениями свойств, и если да, то что / как?