开发者

JSF 2: Change rendered atribute of a component on phase listener

开发者 https://www.devze.com 2023-04-09 23:44 出处:网络
Hy guys, In JSF 2 How can I change the rendered atribute of a h:InputText component using a PhaseListener.

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 ch开发者_如何学运维ange the atribute to be rendered or not.

Am I clear?


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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号