【问题标题】:Primefaces Ajax listener is not getting called when rendered is used in Panel在 Panel 中使用渲染时未调用 Primefaces Ajax 侦听器
【发布时间】:2015-09-03 14:52:24
【问题描述】:

下面是正在使用的代码 sn-p。当我从下面的代码中删除渲染属性时,监听器被调用。但是使用渲染,它不会调用侦听器。 我的 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>

【问题讨论】:

  • &lt;h:outputLabel for="primaryContactHomeCounty" 上没有右大括号
  • 这是一个错字。现已添加。
  • #{address} 在什么范围内?
  • #{address} 在 RequestScope 中。
  • 你有封闭的h:form吗?

标签: ajax jsf primefaces conditional-rendering


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    此行不遵循 JavaBean 标准。

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

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

    【讨论】:

    • 代码只有在包含渲染时才不起作用,其中的语法不正确?对我来说,这听起来像是真正的问题。
    • 我同意不符合Java标准,但不存在编译问题。即使我使用 getMultipleCounty 而不是 isMultipleCounty,问题仍然存在。
    • 只有多个国家/地区?
    • 看,如何命名变量并不重要。它只是标准,我们应该遵循以获得更好的可读性。这个问题不是因为命名约定。
    • 我知道你来自哪里。但是,为什么在改变变量的范围后它会起作用?如果 rendered="#{address.isMultipleCounty eq 'Yes'}" 有问题
    猜你喜欢
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 2017-09-24
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多