Wicket:Cómo implementar un IDataProvider/LoadableDetachableModel para listas indexadas

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

  •  21-08-2019
  •  | 
  •  

Pregunta

¿Cuál es la mejor manera de implementar un IDataProvider y un LoadableDetachable en la Peatonal para indizada a la lista?Supongamos que tengo un Cliente que tiene una lista de Direcciones.

class Customer {
    List<Adress> adresses;
}

Ahora quiero implementar un proveedor de datos/ldm para las direcciones de un cliente.Supongo que la forma habitual es un IDataProvider como una clase interna que hace referencia al modelo de cliente de los componentes, como:

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

}

Pregunta:¿Cómo puedo implementar esto, cuando la dirección no tiene un IDENTIFICADOR (por ejemplo,es una de Hibernación Integrable/CollectionOfElements), pero sólo puede ser identificado por su índice en el cliente.direcciones de la lista?Cómo puedo hacer referencia a la entidad propietaria y el índice?

De hecho, conozco a una solución, pero me pregunto si hay un patrón común de hacer esto.

¿Fue útil?

Solución

¿Cuál es su solución propuesta? Su pregunta no parece bastante claro para mí. Se cargan las direcciones perezosamente por Hibernate? No puedo ver realmente cuál es tu problema con el código de seguridad. . Si las direcciones se cargan en Hibernate en los c.getAdresses () iterador (); llamar, entonces usted tiene las direcciones y cuál es el problema? Es el customer.adresses en realidad una lista de objetos de dirección, o simplemente de identificación? Siempre se puede registrar la entidad propietaria y del índice dentro de su AdressLoadableDetachableModel es decir, AdressLoadableDetachableModel (a.getId (), (Cliente) Component.this.getModel ()) Se puede ayudar a aclarar?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top