0

在 Wicket 中为索引列表实现 anIDataProvider和 a的最佳方法是什么?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 列表中的索引来识别时,我将如何实现这一点?如何保持对拥有实体和索引的引用?

事实上,我知道一个解决方案,但我想知道是否有一个通用的模式可以做到这一点。

4

1 回答 1

0

您提出的解决方案是什么?你的问题对我来说似乎不太清楚。地址是由休眠延迟加载的吗?我真的看不出上面的代码有什么问题。如果你的地址被 Hibernate 加载到 c.getAdresses().iterator(); 打电话,然后你有地址,有什么问题?customer.adresses 实际上是地址对象的列表,还是只是 id 的列表?您始终可以在 AdressLoadableDetachableModel 中记录拥有实体及其索引,即 AdressLoadableDetachableModel(a.getId(), (Customer)Component.this.getModel()) 您能帮忙澄清一下吗?

于 2009-07-18T06:52:35.787 回答