【发布时间】:2011-11-28 16:39:59
【问题描述】:
大家好,
在 JSF 2 中,如何使用 PhaseListener 更改 h:InputText 组件的呈现属性。
在渲染 jsf 页面之前,我必须验证 h:inputtexts 的所有 id,然后我将更改要渲染的属性。
我说清楚了吗?
【问题讨论】:
标签: jsf-2 uicomponents phaselistener
大家好,
在 JSF 2 中,如何使用 PhaseListener 更改 h:InputText 组件的呈现属性。
在渲染 jsf 页面之前,我必须验证 h:inputtexts 的所有 id,然后我将更改要渲染的属性。
我说清楚了吗?
【问题讨论】:
标签: jsf-2 uicomponents phaselistener
在 GET 请求中,在呈现响应的前阶段尚未创建视图根,而在后阶段则为时已晚,因为响应已被呈现并发送到客户端。然而,视图根在“预渲染视图”系统事件期间可用于修改。
public class PreRenderViewListener implements SystemEventListener {
@Override
public void processEvent(SystemEvent event) throws AbortProcessingException {
UIViewRoot root = (UIViewRoot) event.getSource();
// ...
}
@Override
public boolean isListenerForSource(Object source) {
return true;
}
}
要让它运行,在faces-config.xml注册它如下:
<application>
<system-event-listener>
<system-event-listener-class>com.example.PreRenderViewListener</system-event-listener-class>
<system-event-class>javax.faces.event.PreRenderViewEvent</system-event-class>
</system-event-listener>
</application>
【讨论】: