Wicket 6:没有 IModel 的嵌套对象的 属性

Wicket 6: Nested object's property without IModel hustle

我有如下嵌套模型:

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。

是否可以在同一张表格中同时编辑姓名和城市?

我不知道 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"));