Primefaces ajax事件不起作用

Primefaces ajax事件不起作用,primefaces,jsf-2,Primefaces,Jsf 2,我有一个表单,当复选框为true时应该出现。这行不通。奇怪的是:我在另一个页面上也做了同样的事情,结果它成功了。此外,当在支持bean本身中使用另一个布尔属性时,它也可以工作 <div class="field"> <p:outputLabel for="company" value="Company" /> <p:selectBooleanCheckbox id="company" value="#{participantDetailBean.pa

我有一个表单,当复选框为true时应该出现。这行不通。奇怪的是:我在另一个页面上也做了同样的事情,结果它成功了。此外,当在支持bean本身中使用另一个布尔属性时,它也可以工作

<div class="field">
    <p:outputLabel for="company" value="Company" />
    <p:selectBooleanCheckbox id="company" value="#{participantDetailBean.participant.isCompany}">
        <p:ajax event="change" update="companyFields"/>
    </p:selectBooleanCheckbox>
</div>
<p:outputPanel id="companyFields">
    <div class="field">
        <p:outputLabel for="companyname" value="Company name" rendered="#{participantDetailBean.participant.isCompany}" />
        <p:inputText id="companyname" value="#{participantDetailBean.participant.companyName}" rendered="#{participantDetailBean.participant.isCompany}" />
    </div>

    <div class="field">
        <p:outputLabel for="companyform" value="Company form" rendered="#{participantDetailBean.participant.isCompany}" />
        <p:inputText id="companyform" value="#{participantDetailBean.participant.companyForm}" rendered="#{participantDetailBean.participant.isCompany}" />
    </div>

    <div class="field">
        <p:outputLabel for="companynumber" value="Company number" rendered="#{participantDetailBean.participant.isCompany}" />
        <p:inputMask id="companynumber" value="#{participantDetailBean.participant.companyNumber}" mask="aa 9999.999.999" rendered="#{participantDetailBean.participant.isCompany}" />
    </div>
</p:outputPanel>

有时Primefaces会在一个页面上工作的组件拒绝在另一个页面上工作时出现问题。您在示例中发布的代码是正确的,如果您在company getter上放置断点,则当触发ajax事件更改时,值将正确更新。发生的情况是,您的组件没有通过ajax正确刷新(或者无法识别)

我发现的一个解决方案是将JSF的PanelGroup包含在OutputPanel中。我使用了您代码的基础,并制作了以下示例(显然,我用您示例中的对象替换了项目中的标记)

<div class="field">
             <p:selectBooleanCheckbox id="company" 
                    value="# {participantDetailBean.participant.isCompany}">
                           <p:ajax event="change" update=":companyFields"/>
              </p:selectBooleanCheckbox>
    </div>

<p:outputPanel id="companyFields">
     <h:panelGroup id="companyFields2" rendered="#{participantDetailBean.participant.isCompany}">
          <div class="field">
                <p:outputLabel value="DISPLAY THIS FIELD"/>
          </div>
     </h:panelGroup>
</p:outputPanel>

虽然这不是最干净的解决方案,但它可能会帮助您摆脱目前的困境,或者指导您获得正确的答案

xmlns:h=”http://xmlns.jcp.org/jsf/html"


有时Primefaces会出现这样的情况:在一个页面上工作的组件拒绝在另一个页面上工作。您在示例中发布的代码是正确的,并且很可能是您在company getter上放置了一个断点,当触发ajax事件更改时,值将正确更新。发生的情况是您的组件未通过ajax正确刷新(或无法识别)

我找到的一个解决方案是将JSF的PanelGroup包含在OutputPanel中

<div class="field">
             <p:selectBooleanCheckbox id="company" 
                    value="# {participantDetailBean.participant.isCompany}">
                           <p:ajax event="change" update=":companyFields"/>
              </p:selectBooleanCheckbox>
    </div>

<p:outputPanel id="companyFields">
     <h:panelGroup id="companyFields2" rendered="#{participantDetailBean.participant.isCompany}">
          <div class="field">
                <p:outputLabel value="DISPLAY THIS FIELD"/>
          </div>
     </h:panelGroup>
</p:outputPanel>

虽然这不是最干净的解决方案,但它可能会帮助您摆脱目前的困境,或者指导您获得正确的答案

xmlns:h=”http://xmlns.jcp.org/jsf/html"


尝试使用
itemSelect
事件。

尝试使用
itemSelect
事件。

查看此处:。最有可能的问题原因在此处查看:。最有可能的问题原因在原始帖子的此部分中提到:“同样,当在支持bean中使用另一个布尔属性时,它也能工作。”最有可能的原因是不同的…这部分在原始帖子中:“同样,当在支持bean中使用另一个布尔属性时,它也能工作。”。“最有可能的原因是不同的……你能添加一小段文字来解释你认为/怀疑这解决了问题的原因吗?这是代码(仍然缺少文字解释),请编辑你的答案你能添加一小段文字来解释你认为/怀疑这解决了问题的原因吗?这是代码(仍然缺少文本解释)并请编辑您的答案