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.
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