Объект Wicket Model содержит список - как это правильно связать - PullRequest
1 голос
/ 10 января 2012

У меня есть следующий класс модели (упрощенно)

class A{
  private String name;
  private List<B> items;
}

class B{
  private long from;
  private long to;
}

Более того, у меня есть форма, которая получает класс A, связанный с CompoundPropertyModel.Если я хочу отобразить TextField, которое связано с полем имени, я просто добавляю

new TextField("name"); 

и все.Но как правильно связать этот список предметов?Для класса BI также есть FormComponent, который переопределяет convertInput, потому что я хочу сделать некоторые вычисления, прежде чем присваивать значения полям от, до.Я пытался (Property) ListView, но оба, кажется, не работают (или я использую их неправильно).

Спасибо и всего наилучшего,

M.

1 Ответ

6 голосов
/ 10 января 2012

Использование

Form form = new Form("form", new CompoundPropertyModel(modelObject));
form.add(new ListView("items")); 

эквивалентно

Form form = new Form("form", new CompoundPropertyModel(modelObject));
form.add(new ListView("items", new PropertyModel(modelObject, "items"));

Модель ListView будет поддерживаться свойством items объекта модели CPM. Не забудьте переопределить populateItem, в котором объект модели ListItem будет каждым из элементов List.

Вы можете выполнить свои расчеты на свойстве items объекта вспомогательной модели. Если вы не хотите изменять свойство объекта модели, вам не следует использовать CPM для привязки свойства items и реализовывать Model, который предоставляет измененный List (может быть полезно, если вы хотите эти вычисления обновляться при каждом отображении страницы, как при обновлении ajax.

На этой вики-странице Wicket показано использование ListView: ListView и других ретрансляторов

...