Калитка:Как реализовать IDataProvider / LoadableDetachableModel для индексированных списков

StackOverflow https://stackoverflow.com/questions/368033

  •  21-08-2019
  •  | 
  •  

Вопрос

Каков наилучший способ реализовать 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?Как мне сохранить ссылку на объект-владелец и индекс?

На самом деле, я знаю решение, но мне интересно, существует ли общий шаблон для этого.

Это было полезно?

Решение

Каково предлагаемое вами решение?Ваш вопрос кажется мне не совсем ясным.Загружаются ли адреса лениво в режиме гибернации?Я действительно не могу понять, в чем ваша проблема с приведенным выше кодом.Если ваши адреса загружаются с помощью гибернации на c.getAdresses().iterator();звоните, значит, у вас есть адреса и в чем проблема?Является ли customer.adresses на самом деле списком объектов address или просто идентификаторами?Вы всегда можете записать объект-владелец и его индекс внутри вашей AdressLoadableDetachableModel, т.е.AdressLoadableDetachableModel(a.getId(), Компонент (Клиента).this.getModel()) Можете ли вы помочь внести ясность?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top