2013-03-15 2 views
0

FacesContext과 다른 컨텍스트에서 RequestContext rq = RequestContext.getCurrentInstance()을 호출하는 이유는 NullPointerException입니까?RequestContext가 FacesContext와 다른 컨텍스트에서 NPE를 throw합니다.

내가 좋아하는 뭔가를 할 수 없습니다입니다 : 내가 뭘하려고 오전

RequestContext rq = RequestContext.getCurrentInstance() //NPE is thrown 
if (rq != null) { 
.. 
} 

WebFilter 내부 빈을 검색하고 메서드를 호출하는 것입니다. 이 방법은 위의 스 니펫을 사용합니다. 그래서 그것은 NullPointerException을 던졌습니다.

도움 주셔서 감사합니다.

답변

2

RequestContext의 인스턴스는 FacesContext에 속성으로 저장되므로 FacesContext이 없으면 NPE가 표시됩니다. 방법은 다음과 같습니다 RequestContext를 얻을 수 당신을 말할 것이다 코드이며, 그 삭제됩니다 :

return (RequestContext) FacesContext.getCurrentInstance().getAttributes().get(Constants.REQUEST_CONTEXT_ATTR); 

RequestContext 만들기 및 보기 단계을 복원 한 후, Primefaces의 PhaseListener에서 이루어집니다 FacesContext 속성으로 저장, 따라서 귀하의 필터에 존재하지 않습니다.

관련 문제