Yes, indeed. Sorry...
-------- Original-Nachricht -------- Datum: Wed, 14 Mar 2007 12:14:10 -0400 Von: Jeff Bischoff <[EMAIL PROTECTED]> An: MyFaces Discussion <[email protected]> CC: Betreff: Re: Question about redirection on timeout > He must have forgotten to give it to you. It's from the wiki. :) > > > /** > * Allows to get FacesContext outside of a faces request. > */ > protected FacesContext getFacesContext(HttpServletRequest request, > HttpServletResponse response) { > FacesContext facesContext = FacesContext.getCurrentInstance(); > if (facesContext == null) { > > FacesContextFactory contextFactory = > (FacesContextFactory)FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY); > LifecycleFactory lifecycleFactory = > (LifecycleFactory)FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY); > > Lifecycle lifecycle = > lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE); > > facesContext = > contextFactory.getFacesContext(request.getSession().getServletContext(), > request, response, lifecycle); > /* > // set a new viewRoot, otherwise context.getViewRoot > returns null > UIViewRoot view = > facesContext.getApplication().getViewHandler().createView(facesContext, > ""); > facesContext.setViewRoot(view); > */ > } > return facesContext; > } > > I have this function defined in my security filter. The filter works > great for redirection both on timeout and unauthorized pages. > > Regards, > > Jeff Bischoff > Kenneth L Kurz & Associates, Inc. > > Thomas Chang wrote: > > Hi, > > > > I tryed your code but I got compile error by: > > > > FacesContext lContext = getFacesContext(pRequest, pResponse); > > > > Here is the error message: > > "The method getFacesContext(ServletRequest, ServletResponse) is > undefined" > > > > Regards > > > > Thomas > > > > > > > > > > Veit Guna <[EMAIL PROTECTED]> schrieb: Your web.xml looks ok to me, > although my url-pattern begins with "/". > > > > I've something like this in my working Filter: > > > > public void doFilter(ServletRequest pRequest, ServletResponse > > pResponse, FilterChain pChain) throws IOException, ServletException { > > HttpServletRequest lRequest = (HttpServletRequest) pRequest; > > > > if (! lRequest.isRequestedSessionIdValid() && > > lRequest.getRequestedSessionId() != null) { > > > > log.debug("invalidated session detected!"); > > FacesContext lContext = getFacesContext(pRequest, pResponse); > > > > lRequest.getSession().invalidate(); > > > > lRequest.getSession(true); > > > > > > > lContext.getApplication().getNavigationHandler().handleNavigation(lContext, > > null, "session_expired"); > > } else { > > pChain.doFilter(pRequest, pResponse); > > } > > } > > > > The "session_expired" is the normal jsf outcome. > > > > I hope that helps. > > > > Veit > > > > > > Thomas Chang schrieb: > >> Hi, > >> > >> I do following: > >> 1. > >> set filter in web.xml as follow: > >> > >> sessionExpiredFilter > >> > >> my.utils.SessionExpiredFilter > >> > >> > >> ... > >> > >> sessionExpiredFilter > >> *.jsf > >> > >> > >> 2. > >> And here is my filter class: > >> public class SessionExpiredFilter { > >> private String page = "/jsp/login/login.xhtml"; > >> > >> public void destroy() { > >> } > >> > >> public void doFilter(ServletRequest request, ServletResponse response, > >> FilterChain chain) throws IOException, ServletException { > >> if (((HttpServletRequest) request).getRequestedSessionId() != null > >> && ((HttpServletRequest) request).isRequestedSessionIdValid() > == > >> false) { > >> RequestDispatcher rd = request.getRequestDispatcher(page); > >> rd.forward(request, response); > >> } else { > >> chain.doFilter(request, response); > >> } > >> } > >> > >> public void init(FilterConfig filterConfig) throws ServletException { > >> if (filterConfig.getInitParameter("page") != null) { > >> page = filterConfig.getInitParameter("page"); > >> } > >> } > >> > >> } > >> > >> But it doesn't work. If the timeout comes, it dosen't redirect. > >> > >> Could you please show me your filter class? > >> > >> Regards > >> > >> Thomas > >> > >> > >> > >> */Veit Guna /* schrieb: > >> > >> Hi. > >> > >> Yes, I use a filter to handle session-timedout requests. The next > >> time an invalidated session is requested, a redirect will be done. > >> > >> Regards, > >> Veit > >> > >> -------- Original-Nachricht -------- > >> Datum: Tue, 13 Mar 2007 15:11:45 +0100 (CET) > >> Von: Thomas Chang > >> An: [email protected] > >> CC: > >> Betreff: Question about redirection on timeout > >> > >> > Hi all, > >> > > >> > I set the timeout in the web.xml and it works find. What I want > >> now is: if > >> > the timeout comes, it redirects to the login.xhtml. How can I do > that? > >> > Seems I have to rewrite the filter? > >> > > >> > Regards > >> > > >> > Thomas > >> > > >> > > >> > --------------------------------- > >> > Was Sie schon immer wissen wollten aber nie zu Fragen trauten? > Yahoo! > >> > Clever hilft Ihnen. > >> > >> -- > >> "Feel free" - 5 GB Mailbox, 50 FreeSMS/Monat ... > >> Jetzt GMX ProMail testen: www.gmx.net/de/go/mailfooter/promail-out > >> > >> > >> > ------------------------------------------------------------------------ > >> Der neue Internet Explorer 7 in deutscher Ausführung ist da > >> ! > >> > > > > > > > > --------------------------------- > > Was Sie schon immer wissen wollten aber nie zu Fragen trauten? Yahoo! > Clever hilft Ihnen. > > -- "Feel free" - 5 GB Mailbox, 50 FreeSMS/Monat ... Jetzt GMX ProMail testen: www.gmx.net/de/go/mailfooter/promail-out

