Thank u very much adrian your reply was very usefull but i have one more 
question how can i reach view to  be displayed next in filter. 
thanks for your help..

Adrian Mitev <[EMAIL PROTECTED]> wrote: This is from http://jsffaq.com. 
Currentyle the site is down. I`ve
downloaded this article before.
---------------

Outside the Faces realm, for example in a filter or a servlet, when
the FacesContent.getCurrentInstance() returns null, you can use
FacesContextFactory to reach the FacesContext. This is a method that
allows you to do so:

// You need an inner class to be able to call FacesContext.setCurrentInstance
// since it's a protected method
private abstract static class InnerFacesContext extends FacesContext
{
  protected static void setFacesContextAsCurrentInstance(FacesContext
facesContext) {
    FacesContext.setCurrentInstance(facesContext);
  }
}

private FacesContext getFacesContext(ServletRequest request,
ServletResponse response) {
  // Try to get it first
  FacesContext facesContext = FacesContext.getCurrentInstance();
  if (facesContext != null) return facesContext;

  FacesContextFactory contextFactory =
(FacesContextFactory)FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
  LifecycleFactory lifecycleFactory =
(LifecycleFactory)FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
  Lifecycle lifecycle =
lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);

  // Either set a private member servletContext =
filterConfig.getServletContext();
  // in you filter init() method or set it here like this:
  // ServletContext servletContext =
((HttpServletRequest)request).getSession().getServletContext();
  // Note that the above line would fail if you are using any other
protocol than http

  // Doesn't set this instance as the current instance of
FacesContext.getCurrentInstance
  facesContext = contextFactory.getFacesContext(servletContext,
request, response, lifecycle);

  // Set using our inner class
  InnerFacesContext.setFacesContextAsCurrentInstance(facesContext);

  // set a new viewRoot, otherwise context.getViewRoot returns null
  UIViewRoot view =
facesContext.getApplication().getViewHandler().createView(facesContext,
"yourOwnID");
facesContext.setViewRoot(view);

  return facesContext;
}

-- 
Seeing is believing

Reply via email to