JSF 1.2 (sun RI) と richFaces 3.3 を使用してアプリケーションを開発しています。
選択リストの下に、選択リストでリストの値が変更されたときにパネルを表示したい。
以下は、同じコードです。
> <a4j:form ajaxSubmit="true">
>
<h:panelGrid id="videoServiceTab"> <h:outputLabel for="deviceSelect" value="Select Device :"/>
>
> <h:selectOneMenu id="deviceId" value="#{deviceBean.deviceId}" valueChangeListener="#{deviceBean.startLiveStream}">
> <f:selectItems value="#{deviceBean.userDevices}"/>
> <a4j:support event="onchange" reRender="videoPanel" />
> </h:selectOneMenu>
> <rich:panel id="videoPanel" rendered="#{deviceBean.showPane}">
> My Panel..
> </rich:panel> </h:panelGrid>
</a4j:form>
1) リスト値が選択されると、valueChangeListener が呼び出され、メソッドの showPane 値が更新されます ( true に設定され、デフォルト値は false です)。
2)しかし、showPane 値が true に設定されていても、リッチ パネルは表示されません。
3) 以下は、jsf の「PhaseListener」が組み込まれたログです。「RENDER_RESPONSE」が完了する前に、showPane の値が true に設定されていることを明確に示しています。id videoPanel のリッチ パネルがまだ表示されていません。
4) バッキング Bean (deviceBean) はリクエスト スコープです。
------------- フェーズリスナーのログ ----------
開始フェーズ PROCESS_VALIDATIONS 3
表示ペインは..falseと呼ばれています
startLiveStream内
サービスメソッドから戻る..
終了フェーズ PROCESS_VALIDATIONS 3
開始フェーズ UPDATE_MODEL_VALUES 4
ショー ペインは true と呼ばれます
終了フェーズ UPDATE_MODEL_VALUES 4
開始フェーズ INVOKE_APPLICATION 5
終了フェーズ INVOKE_APPLICATION 5
開始フェーズ RENDER_RESPONSE 6
ショー ペインは true と呼ばれます
ショー ペインは true と呼ばれます
終了フェーズ RENDER_RESPONSE 6