panelGrid的Ajax更新部分

panelGrid的Ajax更新部分,ajax,jsf,Ajax,Jsf,我有一个带有两列的面板网格,第一列包含标签,第二列包含组件。 侦听器backingBean.onFunktionChange将backingBean.functionGraduand的值设置为true。因此,在本例中呈现度的标签和菜单 问题是,如果我首先在城市菜单中选择一个城市,然后更改菜单“功能”中的值,整个面板将更新,因此城市菜单将重置。 但是,如果功能发生变化,我希望保留预选的城市 如果我将函数和度的标签和组件包装在id=panelFunction的panelGroup中,并仅更新此面板,

我有一个带有两列的面板网格,第一列包含标签,第二列包含组件。 侦听器backingBean.onFunktionChange将backingBean.functionGraduand的值设置为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>

#{函数}
#{msgs.city}

我通过在ajax请求中处理整个面板解决了这个问题:


<p:ajax event="change" process="panel"
                update="panel"
                listener="#{backingBean.onFunctionChange}" />