2012-07-10 3 views

답변

3

이 같은 페이지에 <f:phaseListener> 태그를 사용하여 UIViewRoot에 부착 된 상 리스너를 얻을 수 있습니다 :

List<PhaseListener> phaseListeners = FacesContext.getCurrentInstance().getViewRoot().getPhaseListeners(); 

그것은이 UIViewRoot 인스턴스에 부착 된 PhaseListener 인스턴스의 목록을 반환합니다.

당신은 faces-config.xml 파일에 등록 된 모든 글로벌 위상 청취자를 얻고 싶은 경우에이 같은 라이프 사이클 인스턴스에서 그들을 얻을 수 있습니다

FacesContextFactory contextFactory = (FacesContextFactory)FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);  
LifecycleFactory lifecycleFactory = (LifecycleFactory)FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY); 
Iterator<String> lifecycleIds = lifecycleFactory.getLifecycleIds(); 
while (lifecycleIds.hasNext()) { 
    String lifecycleId = lifecycleIds.next(); 
    Lifecycle lifecycle = lifecycleFactory.getLifecycle(lifecycleId); 
    PhaseListener[] phaseListeners= lifecycle.getPhaseListeners(); 
} 

Documentation UIViewRoot

Documentation LifeCycle

-1

다음 단계를 통해 JSF 2.0에서 현재 PhaseID를 얻을 수 있습니다.

PhaseId currentPhaseId = FacesContext.getCurrentInstance().getCurrentPhaseId(); 
+0

당신은 그 질문에 답하고 있지 않습니다. OP는 현재 등록 된'PhaseListener'를 얻는 방법을 묻는 것이지, 현재의 단계 ID를 얻는 방법이 아닙니다. 이것은 실제로 너무 명백합니다. – BalusC

관련 문제