1

皆さん、

JSF 2 では、PhaseListener を使用して ah:InputText コンポーネントのレンダリングされた属性を変更するにはどうすればよいですか。

jsf ページをレンダリングする前に、h:inputtexts のすべての ID を確認する必要があります。その後、属性をレンダリングするかどうかを変更します。

私の言いたいことが分かりますか?

4

1 に答える 1

1

GET リクエストでは、レンダー レスポンスの before フェーズではビュー ルートはまだ作成されず、after フェーズではレスポンスがすでにレンダリングされてクライアントに送信されているため手遅れです。ただし、ビュー ルートは、「ビューのレンダリング前」システム イベント中に変更できます。

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>
于 2011-10-01T12:00:25.323 に答える