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.
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.
getCurrentInstance. Return the FacesContext instance for the request that is being processed by the current thread.
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.
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. :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With