GWT国际化在重新绑定时抛出异常

时间:2009-12-03 21:57:34

标签: gwt internationalization

我正在尝试使用GWT following the instruction国际化测试应用程序,我有:

com.example.client.MyConstants.java
com.example.client.MyConstants_en.properties
com.example.client.MyConstants_fr.properties
com.example.client.MyAppEntryPoint.java

在这段代码中我有:

public interface MyConstants extends Constants
{
      @DefaultStringValue("HelloWorld")
      String hellowWorld();
}

并且

public class MyAppEntryPoint implements EntryPoint
{
    public void onModuleLoad()
    {
        MyConstants constants = GWT.create(MyConstants.class);

        VerticalPanel mainPanel = new VerticalPanel();
        mainPanel.add(new Label(constants.hellowWorld()));
        RootPanel.get("myContainer").add(mainPanel);
    }
}

对于MyApp.gwt.xml,我有:

<module rename-to="myModule">
    <inherits name="com.google.gwt.xml.XML" />  
        <inherits name="com.google.gwt.i18n.I18N"/>

    <inherits name='com.google.gwt.user.theme.standard.Standard'/>

    <!-- Specify the app entry point class.                         -->
    <entry-point class='com.example.client.MyAppEntryPoint'/>

    <extend-property name="locale" values="en,fr"/>
</module>

在html中我有:

...

只要我不包含在xml文件中,这一切似乎都有效。我一做到,就会遇到以下异常:

[ERROR] Generator 'com.google.gwt.i18n.rebind.LocalizableGenerator' threw threw an exception while rebinding 'com.example.client.myConstants'
java.lang.NullPointerException: null
...

任何帮助都会因为它抛出异常而受到高度赞赏。

    -

3 个答案:

答案 0 :(得分:1)

答案是模块名称必须与属性名称相同。所以,如果我使用:

<module rename-to="MyApp">

然后属性文件需要是:

com.example.client.MyAppConstants.java
com.example.client.MyApp_en.properties
com.example.client.MyApp_fr.properties

换句话说,模块名称必须与属性文件相同。

答案 1 :(得分:0)

可能是extend-property不接受多个值。我想你应该写:

<extend-property name="locale" values="en"/>
<extend-property name="locale" values="fr"/>

答案 2 :(得分:0)

在尝试了不同的选项后,我想,你不需要“en”选项,我猜因为这是默认的,因此你需要:

com.example.client.MyAppConstants.java (Interface)
com.example.client.MyAppConstants.properties (Default)
com.example.client.MyAppConstants_fr.properties (Other language)

希望这有助于别人的时间。