在Wicket中为索引列表实现IDataProvider
和LoadableDetachable
的最佳方法是什么?假设我的客户有一份地址清单。
class Customer {
List<Adress> adresses;
}
现在我想为客户的地址实现数据提供者/ ldm。我认为通常的方法是IDataProvider
作为内部类,它引用组件的客户模型,如:
class AdressDataProvider implements IDataProvider {
public Iterator iterator() {
Customer c = (Customer)Component.this.getModel(); // somehow get the customer model
return c.getAdresses().iterator();
}
public IModel model(Object o) {
Adress a = (Adress) o;
// Return an LDM which loads the adress by id.
return new AdressLoadableDetachableModel(a.getId());
}
}
问题:如果地址没有ID(例如,它是Hibernate Embeddable / CollectionOfElements),但只能通过customer.adresses列表中的索引来识别,我将如何实现?如何保持对拥有实体和索引的引用?
事实上,我知道一个解决方案,但我想知道是否有一个共同的模式来做到这一点。
答案 0 :(得分:0)
您建议的解决方案是什么?你的问题对我来说似乎不太清楚。地址是否被休眠加载?我无法真正看到上述代码的问题。如果你的地址被Hibernate加载到c.getAdresses()。iterator();打电话,然后你有地址,有什么问题? customer.adresses实际上是一个地址对象列表,还是只是id? 您始终可以在AdressLoadableDetachableModel中记录拥有实体及其索引,即 AdressLoadableDetachableModel(a.getId(),(Customer)Component.this.getModel()) 你能帮忙澄清一下吗?