Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FacesContext#getCurrentInstance() returns null in Filter#doFilter()

Inside a

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)

I wanted to get the session using

FacesContext.getCurrentInstance().getExternalContext().getSession(false);

But I realised that FacesContext.getCurrentInstance() returns null. I know that I can get the session using ((HttpServletRequest) req).getSession(false) instead, but my concrete question is: why is the faces context null in the doFilter() method?

I'm using MyFaces 1.1.

like image 219
Pravin Sonawane Avatar asked Jan 18 '13 07:01

Pravin Sonawane


People also ask

What is FacesContext?

FacesContext contains all of the per-request state information related to the processing of a single JavaServer Faces request, and the rendering of the corresponding response. It is passed to, and potentially modified by, each phase of the request processing lifecycle.

What does FacesContext getCurrentInstance () do?

getCurrentInstance. Return the FacesContext instance for the request that is being processed by the current thread.

What is external context in JSF?

public abstract class ExternalContext extends Object. This class allows the Faces API to be unaware of the nature of its containing application environment. In particular, this class allows JavaServer Faces based appications to run in either a Servlet or a Portlet environment.


1 Answers

FacesContext as an object is tied directly to the JSF request processing lifecycle and as a result is only available during a standard JSF (user-driven) request-response process. The actual object itself is stored in a thread that runs during the processing of a JSF request, vis-a-vis a ManagedBean.

But. BalusC has outlined some steps to get your hands on the object outside of the processing lifecycle here. :)

like image 172
kolossus Avatar answered Oct 27 '22 19:10

kolossus