jsf 2 - 添加 <f:event...编程



我有一个JSF页面,其中包含以下代码:

...
<f:event type="preRenderView" listener="#{page1.PreRenderViewEvent}"/> 
...

现在我需要注册侦听器(Page1)。preenderviewevent方法)不在页面中,而是在Page1类构造函数中…比如:

...
UIViewRoot root = FacesContext.getCurrentInstance().getViewRoot();
root.getListenersForEventClass(javax.faces.event.PreRenderViewEvent.class).add ....
...

如何完成这段代码?
谢谢。

使用UIViewRoot#subscribeToViewEvent()

context.getViewRoot().subscribeToViewEvent(PreRenderViewEvent.class, new MySystemEventListener);

注意,如果bean是在呈现响应阶段构造的,就像在GET请求期间发生的那样,那就太晚了。您最好在请求作用域bean本身的构造函数中(或者更清楚地说,在@PostConstruct中)完成这项工作。

最新更新