Wicket: Come implementare un IDataProvider / LoadableDetachableModel per le liste indicizzate

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

  •  21-08-2019
  •  | 
  •  

Domanda

Qual è il modo migliore per attuare un IDataProvider e un LoadableDetachable in Wicket per un elenco indicizzato? Supponiamo che io sono un cliente che ha un elenco di Indirizzi.

class Customer {
    List<Adress> adresses;
}

Ora voglio implementare un data provider / LDM per gli indirizzi di un cliente. Suppongo che il modo usuale è un <=> come una classe interna che si riferisce al modello cliente del componente, come:

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

}

Domanda: Come faccio a implementare questa, quando l'indirizzo non dispone di un ID (ad esempio, si tratta di una sospensione Embeddable / CollectionOfElements), ma può essere identificato solo con il suo indice nella lista customer.adresses? Come faccio a mantenere riferimento all'entità possedere e l'indice?

In realtà, so che una soluzione, ma mi chiedo se c'è un modello comune per fare questo.

È stato utile?

Soluzione

Qual è la vostra soluzione proposta? La tua domanda non sembra del tutto chiaro per me. Sono gli indirizzi caricati pigramente da Hibernate? Non posso davvero vedere che cosa il vostro problema è con il codice di cui sopra. . Se gli indirizzi vengono caricati da Hibernate sulle c.getAdresses () iterator (); chiamare, allora avete gli indirizzi e qual è il problema? È il customer.adresses in realtà un elenco di oggetti di indirizzo, o solo id? È sempre possibile registrare all'entità proprietaria ed è indice all'interno del vostro AdressLoadableDetachableModel vale a dire AdressLoadableDetachableModel (a.getId (), (cliente) Component.this.getModel ()) Si può contribuire a chiarire?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top