Pregunta

Mi aplicación está dividida lógicamente en servidor, que contiene mis objetos y controladores de dominio Grails; y el cliente, donde tengo mis clases Ext GWT que construyen todas las páginas de UI.

Para solicitudes de UI, estoy usando una llamada AJAX a un método de controlador que devuelve, por ejemplo, una lista de objetos de dominio como una estructura JSON.

Siguiendo el principio DRY, no me gustaría " serializar " Los datos del dominio a una cadena JSON en el servidor y luego la des-serializan en el cliente a otra estructura. Me gustaría aprovechar el objeto Dominio que ya tengo, esto no tengo que cambiar varios lugares cuando agrego , cambiar o eliminar un nuevo campo.

La pregunta es: ¿es una buena manera de ir?

En caso afirmativo, ¿cuál sería la mejor manera de hacer que los objetos de dominio .groovy estén disponibles en el " lado del cliente " Ext clases de GWT Java?

Si la respuesta es negativa, ¿por qué es mala y qué aconsejaría?

¿Fue útil?

Solución

No hay una buena manera: necesita un objeto java que sea serializable por GWT. La única solución real que puedo ver es escribir un complemento (o agregar al complemento GWT) una forma de autogenerar el objeto de transferencia de datos, tal vez utilizando anotaciones en un objeto de dominio Grails.

Se está utilizando un método similar para generar automáticamente las interfaces RPCAsync en el complemento gwt. Ver GwtGrailsPlugin.groovy en el directorio del complemento gwt, la línea 133 es el comienzo.

Puedes conectarte a eso (o simplemente modificar ese archivo directamente, probablemente más fácil) e insertar algún código para generar los archivos de transferencia de datos. Un beneficio adicional podría ser que podría granular el objeto de transferencia de datos para que los datos privados (como las contraseñas) no sean transferidos.

Otros consejos

Alternativamente, puede enviar sus datos al lado del cliente como json o xml. puedes crear una API REST para tu servidor.

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