Como redirecionar para indexar a página se o tempo de sessão aconteceu no aplicativo JSF

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

  •  23-09-2019
  •  | 
  •  

Pergunta

Estou usando o JSF RI 1.1. Como redirecionar para indexar a página se o tempo de sessão acontecer?

Foi útil?

Solução

Existem duas maneiras que podem ser combinadas:

  1. Fazer uso do <meta> Atualizar cabeçalho no HTML <head> elemento em combinação com HttpSession#getMaxInactiveInterval() que retorna o remanescente de segundos que a sessão ainda não vive.

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

    Esta abordagem redirecionará automaticamente a página para a dada url Quando a sessão expira.

  2. Truque ViewExpiredException dentro web.xml:

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

    Esta abordagem encaminhará automaticamente a solicitação para o dado <location> quando um POST O pedido foi demitido (h:commandButton, h:commandLink, etc) enquanto a sessão expirou.

Observe que eu pessoalmente preferiria uma página de aviso intermediária de "Sessão expirou" ou alerta para evitar "WTF?" experiências e, assim, melhore a experiência do usuário. Ainda mais, eu também preferiria disparar uma enquete Ajaxical a cada minuto quando o cliente demonstrou atividade ouvindo click e keypress, para que a vida da sessão possa ser mais adiada.

Outras dicas

Você pode usar um Filter pegar a exceção específica indicando o tempo limite e redirecionar a partir daí.

JSF2:

<meta http-equiv="refresh" content="#{facesContext.externalContext.sessionMaxInactiveInterval};url=#{request.contextPath}/index.xhtml"/>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top