10

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.

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
Pravin Sonawane
  • 1,803
  • 4
  • 18
  • 32

1 Answers1

13

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. :)

kolossus
  • 20,559
  • 3
  • 52
  • 104