【问题标题】:JSF 2: Change rendered atribute of a component on phase listenerJSF 2:在阶段侦听器上更改组件的渲染属性
【发布时间】:2011-11-28 16:39:59
【问题描述】:

大家好,

在 JSF 2 中,如何使用 PhaseListener 更改 h:InputText 组件的呈现属性。

在渲染 jsf 页面之前,我必须验证 h:inputtexts 的所有 id,然后我将更改要渲染的属性。

我说清楚了吗?

【问题讨论】:

    标签: jsf-2 uicomponents phaselistener


    【解决方案1】:

    在 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>
    

    【讨论】:

    • 我使用这个解决方案来设置视图中所有 primefaces:calendar 组件的掩码,基于它们的模式属性并且像一个魅力一样工作。
    猜你喜欢
    • 2012-12-20
    • 1970-01-01
    • 2014-11-10
    • 2013-03-12
    • 2016-04-05
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多