有没有办法通过 el 上下文或应用程序上下文获取 PhaseListener 的当前实例?
问问题
1102 次
2 回答
3
<f:phaseListener>
您可以使用页面上的标签获取附加到 UIViewRoot 的阶段侦听器,如下所示:
List<PhaseListener> phaseListeners = FacesContext.getCurrentInstance().getViewRoot().getPhaseListeners();
它返回附加到此 UIViewRoot 实例的 PhaseListener 实例的列表。
如果您想获取在 faces-config.xml 文件中注册的所有全局阶段侦听器,您可以从 LifeCycle 实例中获取它们,如下所示:
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();
}
于 2012-07-10T23:18:05.350 回答
-1
您可以通过以下方式获取 JSF 2.0 中的当前 PhaseID:
PhaseId currentPhaseId = FacesContext.getCurrentInstance().getCurrentPhaseId();
于 2012-09-13T17:08:05.097 回答