вместо html показан частичный ответ, после обновления отображается html

Я реализовал ответ на этот вопрос: >Тайм-аут сеанса и обработка ViewExpiredException в ajax-запросе JSF/PrimeFaces

Когда запрос AJAX выполнен и есть ViewExpiredException, он отображает мою страницу с истекшим сроком сеанса, на которой есть ссылка для перехода на страницу входа. Но когда вы снова входите в систему, это показывает мне это:

<partial-response id="j_id1">
    <changes>
        <update id="j_id1:javax.faces.ViewState:0">
            <![CDATA[ -4163638607746842558:-2237921975175382496 ]]>
        </update>
    </changes>
</partial-response>

Когда я нажимаю F5, отображается обычный HTML-контент. Почему это происходит и как я могу это решить?

Изменить: чтобы уточнить, после входа в систему я попадаю на ту же страницу, где произошло ViewExpiredException.


person Wesley Egbertsen    schedule 05.11.2015    source источник
comment
В ответ есть несколько предложений. Какой из них вы использовали? Вы создали пользовательский? Совет: не... используйте PrimeFaces или OmniFaces.   -  person Kukeltje    schedule 05.11.2015
comment
Я использовал ExceptionHandler и ExceptionHandlerFactory из JSF и взял за основу ответ Дугласа Джуниора.   -  person Wesley Egbertsen    schedule 05.11.2015
comment
Совет: вы можете отредактировать свой комментарий в течение 5 минут после его публикации...   -  person Kukeltje    schedule 05.11.2015
comment
Ответ зависит от используемой среды аутентификации. Это просто упрямое повторное выполнение последнего запомненного запроса, который не прошел аутентификацию. В основном вам нужно перенастроить его либо с фиксированной целью, либо сделать его осведомленным о JSF ajax.   -  person BalusC    schedule 05.11.2015
comment
@BalusC Я использую j_security_check (область jdbc Glassfish). Как бы я решил это с помощью этой системы аутентификации?   -  person Wesley Egbertsen    schedule 05.11.2015
comment
Это тоже отвечает на ваш вопрос? stackoverflow.com/questions/12504131/   -  person BalusC    schedule 05.11.2015
comment
Я так не думаю, потому что когда я делаю запрос AJAX, когда срок действия сеанса истек, я получаю ViewExpiredException. Это обрабатывается моим customexceptionhandler и делает следующее: if (t instanceof ViewExpiredException) { nav.handleNavigation(fc, null, "/session_expired.xhtml?faces-redirect=true"); } На этой странице написано, что сеанс истек, и есть ссылка, по которой пользователь может щелкнуть, чтобы перейти на страницу входа, но не имеет значения, щелкнете ли вы по ссылке или зайдите сами на страницу входа. После входа в систему отображается частичный ответ. Или я ошибаюсь, и этот ответ относится к моему вопросу?   -  person Wesley Egbertsen    schedule 05.11.2015
comment
Я также нахожу странным, что когда я вхожу в систему, он возвращается туда, где произошло ViewExpiredException, я не указал это?   -  person Wesley Egbertsen    schedule 05.11.2015
comment
@BalusC Я думаю, что решил это, я не знаю, является ли это решением, но я добавил FacesContext.getCurrentInstance().getExternalContext().invalidateSession(); до того, как он сделает handleNavigation, и теперь я больше не получаю частичный ответ.   -  person Wesley Egbertsen    schedule 05.11.2015