I am using JSF RI 1.1. How to redirect to index page if session time out happens?
views:
292answers:
2You can use a Filter
to catch the particular exception indicating the timeout, and redirect from there.
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.