Пожалуйста, обратите внимание на следующую регистрацию:
<form wicket:id="form">
<div wicket:id="fooList">
<input wicket:id="fooList.quxField" type="text" size="10"/>
</div>
<button wicket:id="submit"><wicket:message key="submitText"/></button>
</form>
И эти два класса (я полагаю, сеттеры, геттеры и т. Д.)
class FooClazz {
String quxField;
}
class BarClazz {
List<FooClazz> fooList;
}
И эта форма (модели обернуты в CompoundPropertyModel):
class BarForm extends Form<BarClazz> {
public BarForm(String id,final IModel<BarClazz> model){
super(id,model);
add(new ListView<FooClazz>("fooList"){
@Override
protected void populateItem(final ListItem<FooClazz> item){
item.add(new TextField<String>("fooList.quxField"));
}
}
}
}
Теперь приведенный выше код генерирует для меня исключение времени выполнения:
2011-12-11 16:33:46 ERROR [org.apache.wicket.DefaultExceptionMapper] Unexpected error occurred org.apache.wicket.WicketRuntimeException: The expression 'quxField' is neither an index nor is it a method or field for the list class java.util.ArrayList
Я могу изменить TextField, добавив в него следующую модель:
item.add(new TextField<String>("fooList.quxField", new Model<String>(model.getObject().getFooList().getQuxField())));
Это устраняет ошибку, но когда я отправляю форму (с Ajaxbutton), я никогда не вижу значения, введенные в поля формы.
Так, как я могу сохранить модели TextField, связанные с моей моделью формы? Я пропускаю очевидное?
(Это, конечно, просто очень сокращенная версия моего исходного кода ...)
Необходимо добавить: все мои модели обернуты в CompoundPropertyModels.
Заранее спасибо за любые советы, как это исправить.