2

我已经在 Mac OS X 10.5.8 上的 Tomcat 6.0.29 上部署了一个使用 Eclipse(相当于 HelloGWT 示例)的简单国际化 2.0.4 GWT 应用程序,它有一个下拉列表来获取语言环境并根据选择。

它在开发模式下运行良好,无论是在 Firefox 还是 Safari 中。

当部署到 Tomcat 时,在 Safari 中,应用程序具有其所有功能,但只要鼠标指针离开 url 字段,url 字段中的旋转轮就会持续运行。

另一方面,在 Firefox 3.6.10 中,没有这样的行为,但它直接打开了显示用户代理等的问候对话框,就好像点击了按钮一样。

在这两种情况下,我都看不出问题出在哪里。

这是我用来更改网址的代码:

languageBox.addChangeHandler(new ChangeHandler() {
    @Override
    public void onChange(ChangeEvent event) {
        String languageName = languageBox.getValue(languageBox.getSelectedIndex());
        UrlBuilder builder = Location.createUrlBuilder().setParameter("locale", languageName);
        Window.Location.replace(builder.buildString());
    }
});

我在这里做错了什么吗?

提前感谢您的任何提示。

附加信息

我使用 simplePanel 来包装列表框,这样我就可以将它和应用程序的标题放在一起。我想知道这是否可能是 Safari 的问题:

RootPanel.get("applicationName").add(new Label(constants.helloGWT()));
...
// Here comes the definition of languageBox
...
final SimplePanel languagePanel = new SimplePanel();
    languagePanel.add(languageBox);
    languagePanel.addStyleName("languagePanel");
    RootPanel.get("languagePanelContainer").add(languagePanel);

然后在我的html页面中:

<div align="center">
    <h1 id="applicationName"></h1>
    <div id="languagePanelContainer"></div>
</div>

知道我在这里出错的地方吗?

提前感谢您的任何回答。

4

1 回答 1

0

这个简单的例子对我来说很好用:

    public void onModuleLoad() {
        final ListBox languageBox = new ListBox(false);
        languageBox.addItem("en");
        languageBox.addItem("de");
        languageBox.addItem("fr");

        languageBox.addChangeHandler(new ChangeHandler() {

            @Override
            public void onChange(ChangeEvent event) {
                String languageName = languageBox.getValue(languageBox.getSelectedIndex());
                UrlBuilder url = Window.Location.createUrlBuilder().setParameter("locale", languageName);
                Window.Location.replace(url.buildString());
            }
        });

        RootPanel.get().add(languageBox);
    }

这对你有用吗?

于 2010-10-15T13:52:18.270 回答