wake-up-neo.com

Wie gehe ich mit Sitzungsablauf und ViewExpiredException in JSF 2 um?

Stellen Sie sich das folgende Szenario vor. Ich klicke auf die Senden-Schaltfläche eines JSF-Formulars, nachdem die Sitzung abgelaufen ist. Der Browser zeigt eine Ausnahmemeldung an:

ViewExpiredException: Der Ansichtskontext konnte nicht wiederhergestellt werden

Ich möchte nach Ablauf der Sitzung automatisch zur Homepage der Website umleiten. Was ist der Mechanismus, um dies zu tun? Jede Hilfe wäre sehr dankbar.

47
Selvin

Um die Ausnahme zu behandeln, wenn der Benutzer eine synchrone POST auf einer Seite aufruft, während die HTTP-Sitzung abgelaufen ist und die Methode zum Speichern des JSF-Ansichtsstatus auf server festgelegt ist, fügen Sie ein hinzu <error-page> zum web.xml das fängt die JSF ViewExpiredException und zeigt die Homepage.

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

Um die Ausnahme auch für asynchrone (Ajax-) Anforderungen zu behandeln, müssen Sie ein benutzerdefiniertes ExceptionHandler implementieren, wie in Session-Timeout und ViewExpiredException-Behandlung für JSF/PrimeFaces-Ajax-Anforderungen beantwortet

Siehe auch:

91
BalusC