Cómo redirigir a la página de índice si fuera tiempo de la sesión ocurrió en aplicación JSF
-
23-09-2019 - |
Pregunta
Estoy utilizando JSF RI 1.1. Cómo redirigir a la página de índice si fuera tiempo de la sesión pasa?
Solución
Hay dos maneras que se pueden combinied:
-
Hacer uso de la cabecera
<meta>
de refresco en el elemento<head>
HTML en combinación conHttpSession#getMaxInactiveInterval()
que devuelve el resto de la sesión segundos aún tiene que vivo.<meta http-equiv="refresh" content="${pageContext.session.maxInactiveInterval};url=index.jsf">
Este enfoque se redirigirá automáticamente a la página de la
url
dado cuando caduque la sesión. -
Catch
ViewExpiredException
enweb.xml
:<error-page> <exception-type>javax.faces.application.ViewExpiredException</exception-type> <location>/index.jsf</location> </error-page>
reenviará automáticamente la solicitud a la
<location>
dado cuando una solicitudPOST
se ha disparado (h:commandButton
,h:commandLink
, etc), mientras que la sesión ha caducado Este enfoque.
Tenga en cuenta que yo personalmente preferiría un intermedio "La sesión ha caducado", advirtiendo página o alerta para evitar "wtf?" experiencias y así mejorar la experiencia del usuario. Aún más, yo también prefiero disparar una encuesta ajaxical cada minuto cuando el cliente ha mostrado actividad mediante la escucha en click
y keypress
, de modo que toda la vida de la sesión se puede posponer más.
Otros consejos
Se puede utilizar un Filter
para detectar la excepción particular, que indica el tiempo de espera, y la redirección desde allí.
JSF2:
<meta http-equiv="refresh" content="#{facesContext.externalContext.sessionMaxInactiveInterval};url=#{request.contextPath}/index.xhtml"/>