2012-01-13 19 views
14

¿Es posible "compartir" una clase Java entre el código del cliente GWT y el código del servidor?¿Cómo puedo compartir una clase entre el código del cliente GWT y el código del servidor?

Tengo una clase simple que solo tiene unos Strings y unos List<String> 's. Me gustaría poder utilizar esta clase tanto en el código del lado del cliente como en el código del lado del servidor solo por cierta coherencia.

Para dar algunos antecedentes, la clase que estoy tratando de compartir es solo un contenedor para un mensaje de error con información adicional. En mi aplicación hay algunos errores que impiden un guardado, por lo que hacemos esos controles en el lado del cliente (antes de guardar). Luego, después de guardar, hacemos más comprobaciones de "validación" en el objeto guardado en el lado del servidor.

Entiendo que tendría que ser "compilado" dos veces, una para la compilación GWT y otra para la compilación javac normal, pero parece que debería ser posible.

¿Hay alguna manera de configurar mi proyecto GWT para hacer esto?

Respuesta

18

Una de las razones para usar GWT es tener un modelo de dominio único para el cliente y el servidor.

Es una práctica común tener clases compartidas entre el código del servidor y el lado del cliente.

proyecto GWT lo general, con el código fuente del cliente se divide en tres paquetes

com.yourpackage 
       -shared 
       -client 
       -server 

donde shared paquete compila tanto al código Java de bytes y Javascript, client a Javascript, y la lógica del lado del servidor se coloca en server paquete.

La ruta de compilación para el cliente se puede configurar en el archivo *.gwt.xml.

+3

El estándar para GWT es usar el nombre 'shared'. Dicho esto, buena respuesta. +1 –

+0

Chris, de acuerdo, gracias. –

+4

Gracias Mairbek, esto funcionó para mí. Solo para ser un poco más específico, no teníamos un paquete "compartido", así que tuve que crear un nuevo paquete. También tuve que agregar una línea a mi archivo * .gwt.xml: '' – cshanes

Cuestiones relacionadas