web-dev-qa-db-fra.com

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

Considérez le scénario suivant. Je clique sur le bouton d'envoi d'un formulaire JSF, une fois la session expirée (expirée). 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 la fin de la session. Quel est le mécanisme pour le faire? Toute aide serait très appréciée.

47
Selvin

Pour gérer l'exception chaque fois que l'utilisateur invoque une demande synchrone POST sur une page alors que la session HTTP a expiré et que la méthode d'enregistrement d'état d'affichage JSF est définie sur server, ajoutez un <error-page> au 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 demandes asynchrones (ajax) également, vous devez implémenter un ExceptionHandler personnalisé comme indiqué dans Délai d'expiration de la session et gestion de ViewExpiredException sur la demande ajax JSF/PrimeFaces

Voir également:

91
BalusC