Как лучше всего реализовать IDataProvider
и LoadableDetachable
в Wicket для индексированного списка? Предположим, у меня есть клиент, у которого есть список адресов.
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());
}
}
Вопрос: Как бы это реализовать, если адрес не имеет идентификатора (например, это Hibernate Embeddable / CollectionOfElements), но может быть идентифицирован только по его индексу в списке customer.adresses? Как сохранить ссылку на владелец объекта и индекс?
На самом деле, я знаю решение, но мне интересно, есть ли общий способ сделать это.