I am using JSF RI 1.1. How to redirect to index page if session time out happens?
To handle the exception whenever the user invokes a synchronous POST request on a page while the HTTP session has been expired and the JSF view state saving method is set to server , add an <error-page> to the web. xml which catches the JSF ViewExpiredException and shows the home page.
There are two ways which can be combinied:
Make use of the <meta>
refresh header in the HTML <head>
element in combination with HttpSession#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
in web.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 a POST
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With