0

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

4

1 に答える 1

0

次のコードを試してみましたが、うまくいきました。a4j:outputPanel のドキュメントから明らかなように、更新/変更が必要なコンポーネントをラップします。これは、以下に示すように panelGrid に当てはまります。

<a4j:outputPanel layout="none">
    <h:panelGrid id="videoPanel" rendered="#{deviceBean.showPane}">
    Display Panel..
                                            </h:panelGrid>      
    </a4j:outptPanel>
于 2013-01-06T18:50:05.203 に答える