在Safari 5 for Mac中,替换URL以从GWT中的下拉列表中获取区域设置的行为很奇怪

时间:2010-10-15 13:21:18

标签: gwt gwt2

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

在开发模式下,无论是在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>

我知道我在哪里犯了错误吗?

提前感谢您的回答。

1 个答案:

答案 0 :(得分: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);
    }

这对你有用吗?