2012-10-03 44 views
5

Estoy tratando de obtener las constantes (ConstantsWithLookup) almacenadas en el lado del cliente en el lado del servidor, pero no puede encontrar la manera de hacerlo. Tengo mi interfaz de constantes y mis constantes en la misma carpeta.GWT: Obtener constantes en el lado del servidor

He intentado consejos de otros hilos similares sin éxito.

Probé Hermes, gwt-i18n-server, gwt-dmesg, GTWI18N, utilizando un ResourceBundle, tratando de obtener las propiedades del archivo fuente.

Para los dos primeros, parece que la razón principal es el soporte obsoleto para la versión más nueva de GWT. En cuanto al ResourceBundle, no puede encontrar el archivo de propiedades porque, al momento de la implementación, no hay un archivo de propiedades, solo un Constants.class.

Estoy tratando de evitar cambiar mi archivo de propiedades a otra ubicación (como/WEB-INF/constantes).

Respuesta

9

Estoy usando Hermes con GWT 2.5.0.rc1, y funciona bien. Uso:

  • put Hermes-1.2.0.jar en war/WEB-INF/lib
  • A continuación, en el servidor de lado de escritura algo así como
MyConstantsWithLookup my = Hermes.get(MyConstantsWithLookup.class, "de"); 
String string = my.getString(key); 
  • un archivo de propiedades MyConstantsWithLookup.propertiesdebe existir en el mismo paquete que MyConstantsWithLookup.java, incluso si ese archivo de propiedades está vacío (que podría ser el caso si está utilizando @DefaultStringValue etc.)
  • también añaden MyConstantsWithLookup_de.properties etc.
  • Asegúrese de que estos archivos de propiedades se copian junto a sus clases al compilar. Javac no hace eso, por lo que debe hacerse en un paso de compilación adicional (Eclipse generalmente lo hace de forma automática, pero no ocurrirá por sí mismo al compilar, por ejemplo, con Ant)
  • Muchas configuraciones de compilación omitirán java y archivos de propiedades del paquete "cliente" al compilar el lado del servidor. En ese caso, ponga sus archivos de constantes en el paquete "compartido" (si tiene uno).
+0

Gracias por su respuesta. Logré copiar los archivos mediante el comando de copia en mi archivo build.xml. Todo funciona bien, pero cuando intenta obtener la cadena, aparece el error: ¡GWT.create() solo se puede usar en el código del cliente! No se puede llamar, por ejemplo, desde el código del servidor. ¿Me estoy perdiendo de algo? –

+1

En el lado del servidor, debe usar 'Hermes.get (MyConstantsWithLookup.class, myLanguageCode)' ** en su lugar ** de GWT.create (MyConstantsWithLookup.class). –

+0

Sí, eso es lo que hice y de alguna manera sigo recibiendo ese error. ¿Debo configurar algo en mi clase EntryPoint y módulo xml como en gwt-i18n-server? –

Cuestiones relacionadas