Обработка ViewExireException / ajax и отображение диалогового окна Primefaces

Я неt перенаправить или переслать моего пользователя на другую страницу. Так что, когда мойSessionExpiredExceptionHandler (продолжаетсяExceptionHandlerWrapper) обрабатывает исключение ViewExireException. Я хочу, чтобы пользователь оставался на той же странице и отображал диалог PrimeFaces. Для уведомления о том, что сеанс истек и что пользователю необходимо снова войти в систему (на основе диалога). Я использую функции Servlet 3.1 для входа / выхода пользователя иBasic/file для auth-метода для сопоставления пользователей с различными системными ролями.

Что происходит сейчас, так это то, что представление / страница обновляется через 2 минуты, но сеанс нене может быть признан недействительным Это происходит только во второй раз, когда страница обновляется, через 4 мин.

    
        2
    

Редактировать: Который обновляется метатегом:


Как я могу сделатьSessionExpiredExceptionHandlerаннулировать объект сеанса (выход из сервлета), когда исключения возникают в первый раз, и как я могу вызвать JavaScript (expireDlg.show ()) на клиенте для отображения диалога PrimeFaces?

Я смотрел на некоторые другие темы, но не нашел жизнеспособного решения.Тайм-аут сессии

SessionExpiredExceptionHandler

    @Override
    public void handle() throws FacesException {
    for (Iterator i = getUnhandledExceptionQueuedEvents().iterator(); i.hasNext();) {
        ExceptionQueuedEvent event = i.next();
        ExceptionQueuedEventContext context = (ExceptionQueuedEventContext) event.getSource();
        Throwable t = context.getException();
        if (t instanceof ViewExpiredException) {
        ViewExpiredException vee = (ViewExpiredException) t;
        FacesContext fc = FacesContext.getCurrentInstance();
        Map requestMap = fc.getExternalContext().getRequestMap();
        NavigationHandler nav = fc.getApplication().getNavigationHandler();                

        try {
            requestMap.put("currentViewId", vee.getViewId());

            nav.handleNavigation(fc, null, "Home");
            fc.renderResponse();

        } finally {
            i.remove();
        }                                
        }
    }
    // At this point, the queue will not contain any ViewExpiredEvents.
    // Therefore, let the parent handle them.
    getWrapped().handle();
    }

web.xml

javax.faces.application.ViewExpiredException
    /home.xhtml

Ответы на вопрос(2)

Ваш ответ на вопрос