在面板中使用渲染时,不会调用 Primefaces Ajax 侦听器



下面是正在使用的代码片段。当我从下面的代码中删除渲染的属性时,侦听器被调用。但是对于渲染,它不会调用侦听器。我的 PrimaryContactHomeAddressBean bean 在 RequestScope 中,而 AddressManagedBean 具有 ViewScope。

<p:outputPanel id="countyPanel">
            <p:panelGrid
                id="primaryContactHomeZipPanel" rendered="#{address.isMultipleCounty eq 'Yes'}">
                <h:outputLabel for="primaryContactHomeCounty">
                    </h:outputLabel>
                <p:selectOneMenu id="primaryContactHomeCounty"
                    value="#{addressManagedBean.countyName}">
                    <f:selectItems value="#{addressManagedBean.countyListDropdown}" />
                        <p:ajax listener="#{primaryContactHomeAddressBean.saveCountyName}" process="@this"  update="primaryContactHomecountyName" partialSubmit="true"></p:ajax>
                </p:selectOneMenu>
                <p:message for="primaryContactHomeCounty" />

            </p:panelGrid>
        </p:outputPanel>

我可以通过将isMultipleCounty变量移动到ViewScoped Bean 来解决此问题,即 AddressManagedBean.

此行不遵循 JavaBean 标准。

rendered="#{address.isMultipleCounty eq 'Yes'}"

如果 getter 以 is 开头,那么它应该返回一个布尔值,但在这里你检查一个字符串。如果它返回布尔值,则删除eq 'Yes',无论将其重命名为 multipleCounty

最新更新