jsf - tutorial - no se ha resuelto el tipo de navegación para el componente
Cómo redirigir a la página de índice si el tiempo de espera de la sesión ocurrió en la aplicación jsf (3)
Estoy usando JSF RI 1.1. ¿Cómo redirigir a la página de índice si ocurre el tiempo de espera de la sesión?
Hay dos formas que pueden combinarse:
Utilice el encabezado de actualización
<meta>
en el elemento HTML<head>
en combinación conHttpSession#getMaxInactiveInterval()
que devuelve el remanente de segundos que la sesión aún tiene que vivir.<meta http-equiv="refresh" content="${pageContext.session.maxInactiveInterval};url=index.jsf">
Este enfoque redirigirá automáticamente la página a la
url
determinada cuando expire la sesión.Captura
ViewExpiredException
enweb.xml
:<error-page> <exception-type>javax.faces.application.ViewExpiredException</exception-type> <location>/index.jsf</location> </error-page>
Este enfoque reenviará automáticamente la solicitud a la
<location>
dada cuando se haya disparado una solicitudPOST
(h:commandButton
,h:commandLink
, etc.) mientras la sesión ha expirado.
Tenga en cuenta que personalmente preferiría una página de advertencia o una alerta de "sesión vencida" para evitar "wtf?" experiencias y así mejorar la experiencia del usuario. Aún más, preferiría disparar un sondeo ajaxical cada minuto cuando el cliente ha mostrado actividad escuchando con un click
y click
keypress
, para que la vida útil de la sesión se posponga más.
JSF2:
<meta http-equiv="refresh" content="#{facesContext.externalContext.sessionMaxInactiveInterval};url=#{request.contextPath}/index.xhtml"/>
Puede usar un Filter
para atrapar la excepción particular que indica el tiempo de espera y redirigir desde allí.