GWT:在服务器端获取常量

GWT:在服务器端获取常量,gwt,properties,constants,Gwt,Properties,Constants,我试图在我的服务器端获取存储在客户端的常量(ConstantsWithLookup),但它不知道怎么做。我的常量接口和常量属性位于同一文件夹中 我尝试过其他类似的线索,但没有成功 我使用ResourceBundle尝试了Hermes、gwt-i18n-server、gwt-dmesg、GTWI18N,试图获取源文件属性 对于前两个版本,主要原因似乎是对最新GWT版本的过时支持。至于ResourceBundle,它找不到属性文件,因为在部署时,没有属性文件,只有Constants.class 我试

我试图在我的服务器端获取存储在客户端的常量(ConstantsWithLookup),但它不知道怎么做。我的常量接口和常量属性位于同一文件夹中

我尝试过其他类似的线索,但没有成功

我使用ResourceBundle尝试了Hermes、gwt-i18n-server、gwt-dmesg、GTWI18N,试图获取源文件属性

对于前两个版本,主要原因似乎是对最新GWT版本的过时支持。至于ResourceBundle,它找不到属性文件,因为在部署时,没有属性文件,只有Constants.class

我试图避免将属性文件更改到其他位置(如/WEB-INF/constants)

我使用的是GWT2.5.0.rc1,它运行良好。用法:

  • 将hermes-1.2.0.jar放入war/WEB-INF/lib
  • 然后在服务器端编写如下内容
MyConstantsWithLookup my=Hermes.get(MyConstantsWithLookup.class,“de”);
String String=my.getString(键);
  • 属性文件
    MyConstantsWithLookup.properties
    必须与
    MyConstantsWithLookup.java
    存在于同一个包中,即使该属性文件为空(如果使用@DefaultStringValue等,可能会出现这种情况)
  • 同时添加
    MyConstantsWithLookup_de.properties
  • 确保编译时将这些属性文件复制到类旁边。Javac不能做到这一点,所以它必须在额外的构建步骤中完成(Eclipse通常会自动完成这项工作,但当您使用Ant进行构建时,它不会自行完成)
  • 在编译服务器端时,许多构建设置将跳过“客户端”包中的java和属性文件。在这种情况下,将常量文件放在“共享”包中(如果有)

感谢您的回复。我通过build.xml文件中的copy命令复制了这些文件。一切正常,但当它试图获取字符串时,我得到了一个错误:GWT.create()仅在客户端代码中可用!例如,不能从服务器代码调用它。我遗漏了什么吗?在服务器端,您必须使用
Hermes.get(MyConstantsWithLookup.class,myLanguageCode)
而不是GWT.create(MyConstantsWithLookup.class)。是的,这就是我所做的,而且我一直在得到那个错误。我是否必须像在gwt-i18n-server中那样在EntryPoint类和xml模块中设置一些内容?不,您肯定是在服务器端的某个地方调用gwt.create()(可能是在客户端包的某个类中,但由服务器执行)。看看堆栈跟踪,它会告诉你发生在哪里!对于Hermes,只需确保在服务器(Hermes.get())和客户端(GWT.create())上使用不同的代码即可。(对于gwt-i18n-server,这是相同的,但是如果您在gwt.xml文件等中设置了此选项,您可以在服务器端和客户端同时使用
LocaleFactory.get(Class cls)
,但这是可选的,在Hermes中不可用。)确实是这样。因为我只关注服务器端,所以我没有意识到我正在用GWT.create()实例化constants类,以使从其他类调用它变得更容易和简单。当我把它注释掉并修复我的其他类时,一切都很好。非常感谢。