Wicket: Comment mettre en œuvre un IDataProvider / LoadableDetachableModel pour les listes indexées

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

  •  21-08-2019
  •  | 
  •  

Question

Quelle est la meilleure façon de mettre en œuvre un et un IDataProvider dans Wicket pour LoadableDetachable une liste indexée? Supposons que j'ai un client qui a une liste des adresses,.

class Customer {
    List<Adress> adresses;
}

Maintenant, je veux mettre en œuvre un fournisseur de données / MLD pour les adresses d'un client. Je suppose que la manière habituelle est une comme une classe <=> intérieure qui fait référence au modèle client du composant, comme:

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());
}

}

Question: Comment puis-je mettre en œuvre, lorsque l'adresse ne dispose pas d'un ID (par exemple, il est une mise en veille prolongée intégrable / CollectionOfElements) mais ne peut être identifié par son index dans la liste des customer.adresses? Comment puis-je garder référence à l'entité propriétaire et l'indice?

En fait, je sais une solution, mais je me demande s'il y a un modèle commun pour le faire.

Était-ce utile?

La solution

Quelle est votre solution proposée? Votre question ne semble pas tout à fait clair pour moi. Sont les adresses chargées paresseusement par mise en veille prolongée? Je ne vois pas vraiment ce que votre problème est avec le code ci-dessus. . Si vos adresses sont bien chargées dans Hibernate sur les c.getAdresses () iterator (); appeler, vous avez les adresses et quel est le problème? Est-ce le customer.adresses en fait une liste d'objets d'adresse, ou tout simplement ids? Vous pouvez toujours enregistrer l'entité propriétaire et son index dans votre AdressLoadableDetachableModel à savoir AdressLoadableDetachableModel (a.getId (), (client) Component.this.getModel ()) Pouvez-vous aider à clarifier?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top