Comment rediriger vers la page d'index si le temps de la session sur l'application passé dans jsf
-
23-09-2019 - |
Question
J'utilise JSF RI 1.1. Comment rediriger vers la page d'index si le temps de la session se sortir?
La solution
Il y a deux façons qui peuvent être combinied:
-
Exploitez l'en-tête de rafraîchissement de
<meta>
dans l'élément HTML<head>
en combinaison avecHttpSession#getMaxInactiveInterval()
qui retourne le reste de secondes la session n'a pas encore à vivre.<meta http-equiv="refresh" content="${pageContext.session.maxInactiveInterval};url=index.jsf">
Cette approche redirigera automatiquement la page à la
url
donnée lorsque la session arrive à expiration. -
ViewExpiredException
enweb.xml
:<error-page> <exception-type>javax.faces.application.ViewExpiredException</exception-type> <location>/index.jsf</location> </error-page>
Cette approche automatiquement transmet la demande à la
<location>
donnée lorsqu'une demande dePOST
a été tiré (h:commandButton
,h:commandLink
, etc.) alors que la session est terminée.
Notez que je préfère personnellement une page intermédiaire d'avertissement « Session expirée » ou une alerte pour éviter « wtf? » expériences et ainsi améliorer l'expérience utilisateur. Plus encore, je préfère aussi bien tirer un sondage ajaxical chaque minute lorsque le client a montré une activité en écoutant sur click
et keypress
, de sorte que la durée de vie de la session peut être reportée plus.
Autres conseils
Vous pouvez utiliser un Filter
pour attraper l'exception particulière indiquant le délai d'attente, et rediriger à partir de là.
JSF2:
<meta http-equiv="refresh" content="#{facesContext.externalContext.sessionMaxInactiveInterval};url=#{request.contextPath}/index.xhtml"/>