2011-11-05 6 views
5

È possibile utilizzare i generici nei metodi di richiesta? O se no come risolvere questo problema?Richiedere le proprietà del metodo generico di fabbrica

Diciamo che vorrei implementare l'impaginazione. Quindi nella mia interfaccia di richiesta ho ottenuto tale metodo:

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

ma l'elenco restituisce solo dati limitati. Per l'impaginazione ho bisogno anche di elementi totali. In stile RPC userei oggetto Risultato:

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

dove nel MyResultObject avrei memorizzare List e totalCount come proprietà. Sfortunatamente in RF non sono in grado di farlo. Anche in GWT-RPC potrei usare la sequenza di comandi e l'elenco retrivi da un metodo e il totale da un altro in una singola richiesta.

Come ottenere il totale con la lista di elementi nello stesso tempo?

risposta

3

Si può avere un MyResultObjectProxy (certamente specializzato per l'userProxy), oppure si può fare il vostro due richieste (lista e conteggio totale) nella stessa richiesta lotto HTTP:

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

Dal GWT 2.4, supporti RF polimorfismo, quindi potresti usare un MyResultObjectProxy che non è specializzato in uno specifico EntityProxy (o Value Proxy), anche se non sono sicuro che funzioni effettivamente.

+0

Quindi il tuo abbozzo di aproach funziona, ma dovrei scrivere MyResultObjectProx per ogni entità che vorrei visualizzare in visualizzazione paginazione.
Il secondo secondo me è il migliore, ma ho bisogno di scrivere due ricevitori e sincronizzarli insieme. In effetti ho scritto ReceiverManager che lo fa, ma a mio parere è ancora un metodo scomodo con codice boilerplate. – kospiotr

+0

Terza opzione è la migliore per scrivere non specializzata per un proxy specifico ma non funziona in quanto i proxy non accettano generici o oggetti come elementi di elenco. Altre idee? – kospiotr

+0

Re. terza opzione: anche se usi semplicemente 'Lista '? o forse fare in modo che tutti i proxy delle entità estendano la stessa interfaccia di base e utilizzino tale interfaccia. Dovresti aggiungere cast, di sicuro, ma questo è ancora meno codice standard e un codice compilato più leggero. –