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
urlwhen the session expires.Catch
ViewExpiredExceptioninweb.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 aPOSTrequest 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.