我在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>
我知道我在哪里犯了错误吗?
提前感谢您的回答。
答案 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);
}
这对你有用吗?