Калитка 6: свойство вложенного объекта без шума IModel

У меня есть вложенные модели, такие как:

class User {
  private String name;
  private Address address;
  ...
}

class Address {
  private String city;
  ...
}

Теперь, в Wicket 6, я могу иметь отдельный IModel для доступа ко всем вложенным свойствам, таким как:

IModel<User> userModel = new PropertyModel<>(user);
Form<User> form = new CSRFSafeForm<>("form", user);
form.add(new TextField<>("name"));
form.add(new TextField<>("address.city"));

Возможно ли это без какого-либо дополнительного кодирования?

Я прочитал руководство Wicket https://cwiki.apache.org/confluence/display/WICKET/Working+with+Wicket+models но там написано, что мне нужно создать новую форму и IModel.

Можно ли редактировать как название, так и город в одной форме?

1 ответ

Решение

Я не знаю, откуда приходит CSRFSafeForm.

Но вы можете сделать то же самое со стандартной формой и CompoundPropertyModel:

IModel<User> userModel = new PropertyModel<>(user);
Form<User> form = new Form<>("form", new CompoundPropertyModel<User>(user));
form.add(new TextField<>("name"));
form.add(new TextField<>("address.city"));
Другие вопросы по тегам