Domanda

La mia applicazione è logicamente divisa in server, che contiene i miei oggetti di dominio e controller Grails; e client, dove ho le mie classi Ext GWT che creano tutte le pagine dell'interfaccia utente.

Per le richieste dell'interfaccia utente, sto usando una chiamata AJAX a un metodo controller che restituisce, ad esempio, un elenco di oggetti di dominio come una struttura JSON.

Seguendo il principio DRY, non vorrei "serializzare" i dati del dominio su una stringa JSON sul server quindi deserializzati sul client su un'altra struttura - Vorrei sfruttare l'oggetto Dominio che ho già, questo non devo cambiare più posizioni quando aggiungo , modifica o rimuovi un nuovo campo.

La domanda è: è una buona strada da percorrere?

In caso affermativo, come sarebbe il modo migliore per rendere disponibili oggetti di dominio .groovy sul "client" lato " Ext classi GWT Java?

Se no, perché è male e cosa consiglieresti invece?

È stato utile?

Soluzione

Non esiste un buon metodo: è necessario un oggetto Java serializzabile GWT. L'unica vera soluzione che posso vedere è scrivere un plugin (o aggiungere al plugin GWT) un modo per generare automaticamente l'oggetto di trasferimento dei dati, magari usando le annotazioni in un oggetto di dominio grails.

Un metodo simile viene utilizzato per generare automaticamente le interfacce RPCAsync nel plugin gwt - vedere GwtGrailsPlugin.groovy nella directory del plugin gwt, riga 133 o giù di lì è l'inizio.

Potresti agganciarlo (o semplicemente modificare quel file direttamente, probabilmente più facilmente) e inserire del codice per generare i file di trasferimento dei dati. Un ulteriore vantaggio potrebbe essere la possibilità di granulare l'oggetto di trasferimento dei dati in modo che i dati privati ??(come le password!) Non vengano trasferiti.

Altri suggerimenti

In alternativa, puoi inviare i tuoi dati al client come json o xml. puoi creare un'API REST per il tuo server.

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