0

私は JSF 2.0 アプリケーションを開発しています。ここには、4 つのカスケード ドロップダウンがある xhtml ページがあります。ドロップダウンは、いくつかのクエリに基づいてデータベースから取り込まれます。それはうまくいきます!選択が完了したら、これらのドロップダウンをクリア/リセットする必要があります。このページに 2 度目にアクセスしたとき、ドロップダウンはまだ入力されたままです。最初のドロップダウンから選択すると、2 番目のドロップダウンは更新されますが、3 番目と 4 番目のドロップダウンは更新されません。それらのデータはそのまま残ります。これが私が使用しているコードです。ここでは 3 つのドロップダウンを表示していますが、4 つ目も同様です。ヘルプ/提案をいただければ幸いです。

<label class="control-label">Dropdown1</label>
<div>
<h:selectOneMenu id="drop1" value="#{myBean.aId}">
    <f:selectItem itemLabel="Select" itemValue="" />
    <f:selectItems value="#{myBean.aList}" var ="a"
                    itemLabel="#{a.name}"
                    itemValue="#{a.id}" />

    <p:ajax update="drop2" listener="#{myBean.populateDrop2}" />  

</h:selectOneMenu>
</div>         

<label class="control-label">Dropdown2</label>
<div>
<h:selectOneMenu id="drop2" value="#{myBean.bId}">
    <f:selectItem itemLabel="Select" itemValue="" />
    <f:selectItems value="#{myBean.bList}" var ="b"
                    itemLabel="#{b.name}"
                    itemValue="#{b.id}" />

    <p:ajax update="drop3" listener="#{myBean.populateDrop3}" />  

</h:selectOneMenu>
</div>   


<label class="control-label">Dropdown3</label>
<div>
<h:selectOneMenu id="drop3" value="#{myBean.cId}">
    <f:selectItem itemLabel="Select" itemValue="" />
    <f:selectItems value="#{myBean.cList}" var ="c"
                    itemLabel="#{c.name}"
                    itemValue="#{c.id}" />
</h:selectOneMenu>
</div>   
4

1 に答える 1

1

これは、Beanがセッションスコープ内にある場合、または同じビューでポストバックによってナビゲートされた場合に発生します。Beanをビュースコープに配置し、GETリクエストでナビゲートするだけです。ビュースコープのBeanは、ポストバックによって同じビューと対話する限り存続し、GETリクエストは新しいビュースコープのBeanを効果的に作成します。

参照:

于 2013-03-15T18:54:50.433 に答える