我有一个包含2列的面板网格,第一列包含标签,第二列包含一个组件。 监听器backingBean.onFunktionChange将backingBean.functionGradu的值设置为true。因此,在这种情况下,会出现标签和学位的菜单。
问题在于,如果我首先在城市菜单中选择一个城市然后更改菜单“功能”中的值,则会更新整个面板,从而重置城市菜单。 但是,如果功能发生变化,我想保留预选的城市。
如果我将带有id = panelFunction的panelGroup中的函数和度数的标签和组件包装起来,让我们说并且只更新这个面板,则会破坏两列的布局。
是否有可能只更新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>
答案 0 :(得分:2)
我通过在ajax请求中处理整个面板来解决这个问题:
...
<p:ajax event="change" process="panel"
update="panel"
listener="#{backingBean.onFunctionChange}" />
...