Wicket Model对象包含一个List - 如何正确绑定它

时间:2012-01-09 22:07:09

标签: model wicket

我有以下模型类(简化)

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

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

此外,我有Form获取由CompoundPropertyModel绑定的类A.如果我想显示绑定到name字段的TextField,我只需添加

new TextField("name"); 

就是这样。但是,如何正确绑定此项目列表?对于B类,我也有覆盖convertInput的FormComponent,因为我想在将值分配给from,to之前进行一些计算。 我试过(Property)ListView,但两者似乎都没有用(或者我用错了方法)。

谢谢你,亲切的问候,

微米。

1 个答案:

答案 0 :(得分:6)

使用

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的模型将由CPM模型对象的items属性支持。 请务必覆盖populateItem,其中ListItem的模型对象将是List中的每个元素。

您可以在支持模型对象的items属性上执行计算。如果您不想修改模型对象的属性,则不应使用CPM绑定items属性,并实现提供修改后的Model的{​​{1}}(可能是如果您希望在每次页面渲染时更新这些计算,就像在ajax刷新中一样。

此Wicket维基页面显示了ListListView and other repeaters

的用法