Иерархия компонентов выглядит следующим образом:
SpaceCheckListWindow
SpaceCheckListForm (id: form)
ListView (id: listView)
ListItem (id: <generated by wicket>)
Label (id: label)
CheckBox (id: checkbox)
AjaxButton (id: submitBtn)
В Wicket каждый компонент может иметь модель, в которой хранятся данные, которые он отображает / манипулирует. Эта модель обычно передается компоненту в конструкторе. Если этого не происходит, компонент инициализируется с пустой моделью (что само по себе не является ошибкой). Но в вашем коде ваша форма создается с пустой моделью, и обновлять модель тоже нечего, поэтому getModelObject()
всегда будет возвращать ноль. Это снова не ошибка, ваша форма не обязательно должна иметь сам объект модели.
Единственный компонент, имеющий здесь нетривиальную модель - это CheckBox
, который читает / обновляет поле selected
в ListMemeber
, как и должно быть. (Обновление: конечно, у вашего Label
есть непустая модель, но метки только читают свою модель, но никогда не обновляют ее.)
Итак, подведем итог: в этом коде нет ничего принципиально неправильного, вы просто ищете результат в неправильном месте: вместо выхода из объекта модели в форме перечислите поля selected
всех список участников, чтобы увидеть, что меняется, когда вы отправляете свою форму.
Некоторые дополнительные сведения о моделях Wicket: Работа с моделями Wicket