2 つの列を持つパネル グリッドがあります。最初の列にはラベルが含まれ、2 番目にはコンポーネントが含まれています。リスナー backingBean.onFunktionChange は、backingBean.functionGraduand の値を true に設定します。したがって、この場合、学位のラベルとメニューがレンダリングされます。
問題は、最初に都市のメニューで都市を選択してから、「関数」メニューの値を変更すると、パネル全体が更新され、都市メニューがリセットされることです。ただし、機能変更の場合は、事前に選択された都市を維持したいと考えています。
関数と度のラベルとコンポーネントを id=panelFunction の panelGroup でラップすると、このパネルのみを更新して、2 列のレイアウトを破棄します。
panelGrid のレイアウトに影響を与えずに panelGrid の一部のみを更新する可能性はありますか?
<h:panelGrid columns="2" id="panel">
<label>#{function}</label>
<p:selectOneMenu id="menuFunction" value="#{...}" >
<p:ajax event="change" process="menuFunction"
update="panel"
listener="#{backingBean.onFunctionChange}" />
<f:selectItems .../>
</p:selectOneMenu>
<h:outputLabel id="labelDegree" for="menuDegree"
value="#{msgs.degree}"
rendered="#{backingBean.functionGraduand}" />
<p:selectOneMenu id="menuDegree" value="#{...}" rendered="#{backingBean.functionGraduand}">
<f:selectItems .../>
</p:selectOneMenu>
<label class="required">#{msgs.city}</label>
<p:selectOneMenu value="#{...}" id ="city">
<f:selectItems .../>
</p:selectOneMenu>
</h:panelGrid>