2012-10-03 117 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? –