2012-10-03 24 views
5

Sto cercando di ottenere le costanti (ConstantsWithLookup) archiviate sul lato client sul lato server, ma non riesco a capire come farlo. Ho la mia interfaccia di costanti e le mie proprietà di costanti nella stessa cartella.GWT: Ottieni costanti sul lato server

Ho provato suggerimenti di altri thread simili senza successo.

Ho provato Hermes, gwt-i18n-server, gwt-dmesg, GTWI18N, utilizzando un ResourceBundle, cercando di ottenere le proprietà del file di origine.

Per i primi due, sembra che il motivo principale sia il supporto obsoleto per la versione GWT più recente. Per quanto riguarda ResourceBundle, non è in grado di trovare il file delle proprietà perché, in fase di distribuzione, non esiste un file delle proprietà, solo un Constants.class.

Sto cercando di evitare di modificare il mio file di proprietà in un'altra posizione (come/WEB-INF/costanti).

risposta

9

Sto usando Hermes con GWT 2.5.0.rc1 e funziona correttamente. Uso:

  • put hermes-1.2.0.jar in una guerra/WEB-INF/lib
  • Poi qualcosa sul lato server scrittura come
MyConstantsWithLookup my = Hermes.get(MyConstantsWithLookup.class, "de"); 
String string = my.getString(key); 
  • un file di proprietà MyConstantsWithLookup.propertiesdeve essere nello stesso pacchetto di MyConstantsWithLookup.java, anche se il file di proprietà è vuoto (che potrebbe essere il caso se si utilizza @DefaultStringValue ecc.)
  • aggiungere anche MyConstantsWithLookup_de.properties ecc
  • Assicurarsi, che questi file vengono copiati proprietà accanto alle classi durante la compilazione. Javac non lo fa, quindi deve essere fatto in un passo aggiuntivo (Eclipse di solito lo fa automaticamente, ma non succederà da solo quando costruisci ad esempio con Ant)
  • Molte configurazioni di build salteranno java e file di proprietà dal pacchetto "client" durante la compilazione del lato server. In tal caso, metti i file delle costanti nel pacchetto "condiviso" (se ne hai uno).
+0

Grazie per la risposta. Sono riuscito a copiare i file tramite il comando copia nel mio file build.xml. Tutto funziona bene ma quando tenta di ottenere la stringa ottengo l'errore: GWT.create() è utilizzabile solo nel codice client! Non può essere chiamato, ad esempio, dal codice del server. Mi sto perdendo qualcosa? –

+1

Sul lato server, è necessario utilizzare 'Hermes.get (MyConstantsWithLookup.class, myLanguageCode)' ** invece ** di GWT.create (MyConstantsWithLookup.class). –

+0

Sì, è quello che ho fatto e in qualche modo continuo a ricevere quell'errore. Devo impostare qualcosa nella mia classe EntryPoint e nel modulo xml come in gwt-i18n-server? –

Problemi correlati