2013-01-18 2 views
10

Innerhalb einesFaces # getCurrentInstance() gibt null in Filter # doFilter()

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

ich die Sitzung mit

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

Aber ich erkannte, dass FacesContext.getCurrentInstance() kehrt null bekommen wollte. Ich weiß, dass ich die Sitzung mit ((HttpServletRequest) req).getSession(false) stattdessen bekommen kann, aber meine konkrete Frage ist: Warum ist die Gesichter Kontext null in der doFilter() Methode?

Ich verwende MyFaces 1.1.

Antwort

12

FacesContext als ein Objekt direkt an den Lebenszyklus JSF Anforderungsverarbeitung verknüpft ist, und als Ergebnis ist nur während ein Standard-JSF (user-driven) Anfrage-Antwort-Prozess zur Verfügung. Das eigentliche Objekt selbst wird in einem Thread gespeichert, der während der Verarbeitung einer JSF-Anforderung gegenüber einer ManagedBean ausgeführt wird.

Aber. BalusC hat einige Schritte skizziert, um das Objekt außerhalb des Verarbeitungslebenszyklus zu erreichen: here. :)

+0

danke .. ich denke, ich habe die Idee :) –