Как перенаправить на страницу индекса, если в приложении JSF произошло время сеанса.

StackOverflow https://stackoverflow.com/questions/2543094

  •  23-09-2019
  •  | 
  •  

Вопрос

Я использую JSF RI 1.1. Как перенаправить на страницу индекса, если произойдет время сеанса?

Это было полезно?

Решение

Есть два способа, которые можно объединить:

  1. Использовать <meta> обновить заголовок в HTML <head> элемент в сочетании с HttpSession#getMaxInactiveInterval() который возвращает остаток секунд, сессия еще не прожила.

    <meta http-equiv="refresh" content="${pageContext.session.maxInactiveInterval};url=index.jsf">
    

    Этот подход автоматически перенаправляет страницу на данную url Когда сеанс истекает.

  2. Ловить ViewExpiredException в web.xml:

    <error-page>
        <exception-type>javax.faces.application.ViewExpiredException</exception-type>
        <location>/index.jsf</location>
    </error-page>
    

    Этот подход автоматически пересылает запрос на данное <location> когда POST запрос был запущен (h:commandButton, h:commandLink, и т. Д.) В то время как сеанс истек.

Обратите внимание, что лично я предпочел бы промежуточную «страницу предупреждения с истекшим сессией" или предупреждение, чтобы избежать "WTF?" опыт и, таким образом, улучшить пользовательский опыт. Более того, я бы также предпочел стрелять в аяксический опрос каждую минуту, когда клиент проявлял активность, прослушивая click а также keypress, так что жизнь сессии может быть отложена больше.

Другие советы

Вы можете использовать Filter Чтобы поймать конкретное исключение, указывающее тайм -аут, и перенаправить оттуда.

JSF2:

<meta http-equiv="refresh" content="#{facesContext.externalContext.sessionMaxInactiveInterval};url=#{request.contextPath}/index.xhtml"/>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top