47 votes

Comment gérer l'expiration de la session et l'exception ViewExpiredException dans JSF 2 ?

Considérons le scénario suivant. Je clique sur le bouton "submit" d'un formulaire JSF, après que la session ait expiré. Le navigateur affiche un message d'exception :

ViewExpiredException : le contexte de la vue n'a pas pu être restauré

Ce que je veux faire, c'est rediriger automatiquement vers la page d'accueil du site Web après l'expiration de la session. Quel est le mécanisme pour faire cela ? Toute aide serait très appréciée.

91voto

BalusC Points 498232

Pour gérer l'exception lorsque l'utilisateur invoque une requête POST synchrone sur une page alors que la session HTTP a expiré et que la méthode de sauvegarde de l'état de la vue JSF est définie sur server , ajoutez un <error-page> à la web.xml qui attrape le JSF ViewExpiredException et affiche la page d'accueil.

<error-page>
    <exception-type>javax.faces.application.ViewExpiredException</exception-type>
    <location>/home.xhtml</location>
</error-page>

Pour gérer l'exception sur les requêtes asynchrones (ajax) également, vous devez mettre en œuvre une méthode d'exception personnalisée. ExceptionHandler comme répondu dans Délai d'expiration de la session et traitement des exceptions ViewExpiredException sur les requêtes ajax JSF/PrimeFaces

Voir aussi :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X