How to redirect to index page if session time out happened in jsf application
https://stackoverflow.com/questions/2543094
- |
Solution
There are two ways which can be combinied:
Make use of the
<meta>
refresh header in the HTML<head>
element in combination withHttpSession#getMaxInactiveInterval()
which returns the remnant of seconds the session has yet to live.<meta http-equiv="refresh" content="${pageContext.session.maxInactiveInterval};url=index.jsf">
This approach will automatically redirect the page to the given
url
when the session expires.Catch
ViewExpiredException
inweb.xml
:<error-page> <exception-type>javax.faces.application.ViewExpiredException</exception-type> <location>/index.jsf</location> </error-page>
This approach will automatically forward the request to the given
<location>
when aPOST
request has been fired (h:commandButton
,h:commandLink
, etc) while the session is expired.
Note that I personally would prefer an intermediate "Session Expired" warning page or alert to avoid "wtf?" experiences and thus improve the user experience. Even more, I would as well prefer firing an ajaxical poll every minute when the client has shown activity by listening on click
and keypress
, so that the session's lifetime can be postponed more.