2011-11-05 9 views
5

¿Es posible utilizar medicamentos genéricos en los métodos de solicitud? O si no, cómo solucionar este problema?Solicitar las propiedades del método genérico de fábrica

Digamos que me gustaría implementar la paginación. Así que en mi interfaz de petición Tengo dicho método:

public List<UserProxy> getUserList(int offset, int limit); 

pero la lista no devolvió datos sólo limitadas. Para la implementación de paginación, también necesito elementos totales. En cuanto al estilo RPC yo usaría objeto Resultado:

public MyResultObject<User> getUserList(int offset, int limit) 

donde en MyResultObject Me almacenar la lista y totalCount como propiedad. Desafortunadamente en RF no puedo hacerlo. También en GWT-RPC podría usar el patrón de comando y la lista de recuperación de un método y la cuenta total de otra en una única solicitud.

¿Cómo obtener la cuenta total con la lista de elementos al mismo tiempo?

Respuesta

3

Puede tener un MyResultObjectProxy (la verdad es especializado para el userProxy), o puede hacer que sus dos peticiones (lista y el recuento total) en la misma solicitud por lotes http:

MyContext ctx = factory.context(); 
ctx.getUserList(offset, limit).to(new Receiver<List<UserProxy>>() { … }); 
ctx.getUserTotalCount().to(new Receiver<Integer>() { … }); 
ctx.fire(); 

Desde GWT 2.4, soportes RF polimorfismo, entonces tal vez podría usar un MyResultObjectProxy que no esté especializado en un EntityProxy específico (o un proxy de valor), aunque realmente no estoy seguro de que realmente funcione.

+0

Así que su primer enfoque funciona, pero tendría que escribir MyResultObjectProx para cada entidad que quisiera mostrar en la vista de paginación.
El segundo en mi opinión es el mejor, pero necesito escribir dos receptores y sincronizarlos juntos. De hecho, escribí ReceiverManager, que hace eso, pero en mi opinión, sigue siendo un método incómodo con el código repetitivo. – kospiotr

+0

La tercera opción es la mejor para escribir no especializado para un Proxy específico, pero no funciona, ya que los proxies no aceptan genéricos ni Object como elementos de lista. ¿Alguna otra idea? – kospiotr

+0

Re. tercera opción: incluso si simplemente usa 'List '? o quizás haga que todos los proxies de su entidad extiendan la misma interfaz base y utilicen esa interfaz. Tendría que agregar moldes, seguro, pero eso es aún menos código repetitivo y un código compilado más liviano. –

Cuestiones relacionadas