皆さん、
JSF 2 では、PhaseListener を使用して ah:InputText コンポーネントのレンダリングされた属性を変更するにはどうすればよいですか。
jsf ページをレンダリングする前に、h:inputtexts のすべての ID を確認する必要があります。その後、属性をレンダリングするかどうかを変更します。
私の言いたいことが分かりますか?
皆さん、
JSF 2 では、PhaseListener を使用して ah:InputText コンポーネントのレンダリングされた属性を変更するにはどうすればよいですか。
jsf ページをレンダリングする前に、h:inputtexts のすべての ID を確認する必要があります。その後、属性をレンダリングするかどうかを変更します。
私の言いたいことが分かりますか?
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>