Замена URL-адреса для получения локали из раскрывающегося списка в GWT ведет себя странно в Safari 5 для Mac - PullRequest
2 голосов
/ 15 октября 2010

Я развернул на Tomcat 6.0.29 на Mac OS X 10.5.8 простое интернационализированное приложение GWT 2.0.4, использующее Eclipse (эквивалент примера HelloGWT), в котором есть раскрывающийся список для получения локалей и замены URL-адреса. в зависимости от выбора.

Отлично работает в режиме разработки, либо в Firefox, либо в Safari.

При развертывании в Tomcat в Safari приложение имеет все свои функции, но вращающееся колесо в поле URL работает непрерывно, как только указатель мыши покидает поле URL.

В Firefox 3.6.10, с другой стороны, такого поведения нет, но он непосредственно открывает диалоговое окно приветствия, где отображаются пользовательский агент и т. Д., Как если бы был нажатие кнопки.

В обоих случаях я не вижу, в чем проблема.

Вот код, который я использую для изменения URL:

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 голосов
/ 15 октября 2010

Этот простой пример прекрасно работает для меня:

    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);
    }

Это у вас работает?

...