2012-10-03 152 views
5

我試圖讓我的服務器端存儲在客戶端的常量(ConstantsWithLookup),但它無法弄清楚如何做到這一點。我有我的常量界面和我的常量屬性在同一個文件夾中。GWT:在服務器端獲取常量

我試過其他類似線程的提示,但沒有成功。

我試過Hermes,gwt-i18n-server,gwt-dmesg,GTWI18N,使用ResourceBundle試圖獲取源文件屬性。

對於前兩個,似乎主要原因是對最新GWT版本的過時支持。至於ResourceBundle,它無法找到屬性文件,因爲在部署時,沒有屬性文件,只有一個Constants.class。

我試圖避免改變我的屬性文件到另一個位置(如/ WEB-INF /常量)。

回答

9

我使用Hermes與GWT 2.5.0.rc1,它工作正常。用法:

  • 放HERMES-1.2.0.jar戰成/ WEB-INF/lib目錄
  • 然後在服務器端寫入像
MyConstantsWithLookup my = Hermes.get(MyConstantsWithLookup.class, "de"); 
String string = my.getString(key); 
  • 屬性文件MyConstantsWithLookup.properties必須存在於與MyConstantsWithLookup.java相同的包中,即使該屬性文件爲空(如果使用@DefaultStringValue等,情況可能如此)
  • 另請參閱MyConstantsWithLookup_de.properties
  • 請確保在編譯時將這些屬性文件複製到您的類旁邊。 Javac不這樣做,所以它必須在額外的構建步驟中完成(Eclipse通常會自動執行此操作,但當您使用Ant進行構建時,它本身不會發生)
  • 許多構建設置將跳過java和在編譯服務器端時從「客戶端」包中獲取屬性文件。在這種情況下,將常量文件放在「共享」包中(如果有的話)。
+0

感謝您的回覆。我設法通過我的build.xml文件中的copy命令複製文件。一切工作正常,但當它試圖獲取字符串我得到的錯誤:GWT.create()只能在客戶端代碼中使用!例如,它不能從服務器代碼中調用。我錯過了什麼嗎? –

+1

在服務器端,您必須使用'Hermes.get(MyConstantsWithLookup.class,myLanguageCode)'**代替** GWT.create(MyConstantsWithLookup.class)。 –

+0

是的,這就是我所做的,不知何故,我不斷收到該錯誤。我必須在我的EntryPoint類和xml模塊中設置一些內容,如gwt-i18n-server? –