GXT: Как вывести страницу входа по истечении сеанса - PullRequest
5 голосов
/ 04 мая 2010

Я занимаюсь разработкой веб-приложения с использованием GXT, Hibernate, mysql и т. Д. Для приложения существует страница входа. На самом деле я получаю проблему, чтобы установить страницу входа в систему, когда сеанс истекает. Мы можем установить время ожидания в файле web.xml, но в этом случае мы не сможем перенаправить на страницу входа. Можете ли вы сказать мне, как этого добиться.

Ответы [ 4 ]

3 голосов
/ 30 июля 2010

Вы не можете выполнить перенаправление на стороне сервера, потому что приложение полностью AJAX. Что вы можете сделать, это использовать класс GWT Timer и для каждого из ваших вызовов RPC проверять / сбрасывать таймер. Если срок действия «сессии» истекает, вы перенаправляете на страницу входа через маркер истории. Это был самый простой способ для меня

Некоторые другие чтения:

http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/b9eab8daaa993c83/d0192d356045e061?pli=1

http://gwt -ext.com / форум / viewtopic.php? Е = 9 & т = 1682

2 голосов
/ 08 июля 2011

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

public abstract class SessionExpiredAwareAsyncCallback<T> implements AsyncCallback<T> {

    @Override
    public void onSuccess(T returnObject) {
        doOnSuccess(returnObject);
    }

    @Override
    public void onFailure(Throwable exception) {
        if (exception instanceof SessionExpiredException) {
            goToLoginPage();
        } else {
            doOnFailure(exception);
        }
    }

    public abstract doOnSuccess(T returnObject);

    public abstract doOnFailure(Throwable exception);
}
2 голосов
/ 02 августа 2010

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

1 голос
/ 20 августа 2014

Вы можете использовать gwteventservice для запуска события с сервера на клиент.

...