Автоматическая обработка Window.onClosing в GWT, которая проверяет ввод пользователя - PullRequest
2 голосов
/ 06 сентября 2011

Я сейчас пишу мессенджер с GWT.Теперь я хочу реализовать функцию для автоматического вывода пользователя из системы, когда он закрывает окно, и я нашел этот небольшой фрагмент кода:

Window.addWindowClosingHandler(new Window.ClosingHandler() {
    @Override
    public void onWindowClosing(ClosingEvent event) {
        event.setMessage("If you leave this page, your IM sessions will not be preserved!");
        // My async code to be executed
    }
});

Этот фрагмент очень хорош, так как открывается модальное диалоговое окно с вопросом, следует ли покинуть страницуОднако я не могу проверить, какие параметры выбрал пользователь, и поэтому пользователь будет всегда выходить из системы на данный момент!Может кто-нибудь объяснить мне, как поймать ввод пользователей?

Вот пример:

  • Пользователь входит в систему IM
  • Он чаты
  • Когда пользователь закрывает окно (или пытается), открывается модальное диалоговое окно, хочет ли он закрыть окно или остаться на странице (что работает автоматически благодаря реализации GWT)
    • , если пользователь решил покинутьIM мой код выхода из системы должен быть выполнен
    • , иначе ничего не произойдет, так как он хочет остаться на странице

1 Ответ

3 голосов
/ 06 сентября 2011

Я не думаю, что вы можете получить выбранный вариант (но я точно не знаю).

Дополнительный CloseHandler может решить эту проблему:

    Window.addWindowClosingHandler(new Window.ClosingHandler() {
        @Override
        public void onWindowClosing(ClosingEvent event) {
            event.setMessage("If you leave this page, your IM sessions will not be preserved!");
        }
    });

    Window.addCloseHandler(new CloseHandler<Window>() {
        @Override
        public void onClose(CloseEvent<Window> event) {
            // My async code to be executed
        }
    });

Это должно реализовать поведение, которое вы описали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...