JSF 2: изменение отображаемого атрибута компонента на слушателе фазы - PullRequest
1 голос
/ 30 сентября 2011

Hy парни,

В JSF 2 Как я могу изменить атрибут рендеринга компонента ah: InputText, используя PhaseListener.

Перед тем, как страница jsf будет отображена, я должен проверить все idh: inputtexts, и после этого я буду менять атрибут для отображения или нет.

Я чист?

1 Ответ

1 голос
/ 01 октября 2011

В запросах GET корень представления еще не создан на этапе до ответа ответа рендеринга, а на этапе после - слишком поздно, так как ответ уже был обработан и отправлен клиенту.Корень представления, однако, доступен для изменения во время системного события «pre render view».

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