JSF2——从托管bean获取PhaseListener实例
有没有办法通过el上下文或应用程序上下文获取PhaseListener的当前实例?您可以使用以下页面上的JSF2——从托管bean获取PhaseListener实例,jsf,jsf-2,phaselistener,Jsf,Jsf 2,Phaselistener,有没有办法通过el上下文或应用程序上下文获取PhaseListener的当前实例?您可以使用以下页面上的标记将PhaseListener连接到UIViewRoot: List<PhaseListener> phaseListeners = FacesContext.getCurrentInstance().getViewRoot().getPhaseListeners(); FacesContextFactory contextFactory = (FacesContextFact
标记将PhaseListener连接到UIViewRoot:
List<PhaseListener> phaseListeners = FacesContext.getCurrentInstance().getViewRoot().getPhaseListeners();
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();
}
List phaseListeners=FacesContext.getCurrentInstance().getViewRoot().getPhaseListeners();
它返回附加到此UIViewRoot实例的PhaseListener实例的列表
如果要在faces-config.xml文件中注册所有全局阶段侦听器,可以从LifeCycle实例中获取它们,如下所示:
List<PhaseListener> phaseListeners = FacesContext.getCurrentInstance().getViewRoot().getPhaseListeners();
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();
}
FacesContextFactory contextFactory=(FacesContextFactory)FactoryFinder.getFactory(FactoryFinder.FACES\u CONTEXT\u FACTORY);
LifecycleFactory LifecycleFactory=(LifecycleFactory)FactoryFinder.getFactory(FactoryFinder.LIFECYCLE\u FACTORY);
迭代器lifecycleIds=lifecycleFactory.getLifecycleIds();
而(lifecycleIds.hasNext()){
字符串lifecycleId=lifecycleIds.next();
Lifecycle=lifecycleFactory.getLifecycle(lifecycleId);
PhaseListener[]phaseListeners=lifecycle.getPhaseListeners();
}
您可以通过以下方式获得JSF 2.0中的当前PhaseID:
PhaseId currentPhaseId = FacesContext.getCurrentInstance().getCurrentPhaseId();
你没有回答这个问题。OP询问的是如何获取当前注册的
PhaseListener
s,而不是如何获取当前的相位ID,这一点实在太明显了。