Comment rediriger vers la page d'index si le temps de la session sur l'application passé dans jsf

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

  •  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?

Était-ce utile?

La solution

Il y a deux façons qui peuvent être combinied:

  1. Exploitez l'en-tête de rafraîchissement de <meta> dans l'élément HTML <head> en combinaison avec HttpSession#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.

  2. ViewExpiredException en web.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 de POST 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"/>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top