渲染属性在后续ajax调用中不更新

渲染属性在后续ajax调用中不更新,ajax,jsf,primefaces,Ajax,Jsf,Primefaces,我有一个调用视图范围bean方法的p:commandButton。该方法设置两个名为textA和textB的字符串字段,并返回 ajax调用完成后,将显示对话框。根据变量选项,我希望只显示一个网格。它的初始值是choiceA。发生的情况是,页面加载了默认选项A,我单击按钮,actionListener方法设置textA,对话框显示出来。正如预期的那样,只有一个网格 但是,当我选择choiceB时,仍然显示相同的网格,gridA。换句话说,p:panelGrids的rendered属性仅在页面加载

我有一个调用视图范围bean方法的
p:commandButton
。该方法设置两个名为
textA和textB
的字符串字段,并返回

ajax调用完成后,将显示对话框。根据变量
选项
,我希望只显示一个网格。它的初始值是
choiceA
。发生的情况是,页面加载了默认选项A,我单击按钮,actionListener方法设置
textA
,对话框显示出来。正如预期的那样,只有一个网格

但是,当我选择choiceB时,仍然显示相同的网格,
gridA
。换句话说,
p:panelGrid
s的
rendered
属性仅在页面加载时正常工作,但在随后的ajax调用中不会更新。奇怪的是,
textA和textB
更新得很好

以下是代码的相关部分

<h:form>

    <p:selectOneRadio id="optionChoice" value="#{bean.choice}"
        <f:selectItem itemLabel="B" itemValue="choiceB" />
        <f:selectItem itemLabel="A" itemValue="choiceA" />
    </p:selectOneRadio>

    <p:commandButton value="Save"
        actionListener="#{bean.save}"
        update="dialogId"
        oncomplete="ajaxComplete(xhr, status, args)">

</h:form>

...

<p:dialog widgetVar="dialog" id="dialogId">

    <p:tabView id="tabViewX">
        <p:tab id="tabA" title="Tab A">

            <h:panelGrid id="gridA" rendered="#{bean.choice eq 'choiceA'}">
                <p:inputTextarea value="#{bean.textA}" />
                <h:button />
            </h:panelGrid>

            <h:panelGrid id="gridB" rendered="#{bean.choice eq 'choiceB'}">
                <p:inputTextarea value="#{bean.textB}" />
            </h:panelGrid>

        </p:tab>
    </p:tabView>
</p:dialog>


ajax响应是什么样子的?您是如何阻止缓存的ajax调用的?@Diodeus:JSF默认情况下已经这样做了。ajax响应是:
{“validationOk”:true}
,因此对话框根本不会更新。我已经不确定这是真正的代码还是一条红鲱鱼,但是你说输入已经更新了。现在,这个回答是不可能的,我将发布一个答案。