JSF 2:更改阶段侦听器上组件的呈现属性

发布于 2024-12-07 17:56:38 字数 154 浏览 1 评论 0原文

大家好,

在 JSF 2 中,如何使用 PhaseListener 更改 ah:InputText 组件的渲染属性。

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

我说清楚了吗?

Hy guys,

In JSF 2 How can I change the rendered atribute of a h:InputText component using a PhaseListener.

Before the jsf page be rendered I have to verify all id of the h:inputtexts, and after that I will change the atribute to be rendered or not.

Am I clear?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝色星空 2024-12-14 17:56:38

对于 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>

On GET requests, the view root is not created yet during the before phase of the render response and during the after phase it's too late because the response is already been rendered and sent to the client. The view root is however available for modification during the "pre render view" system event.

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;
    }

}

To get it to run, register it as follows in 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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文