selectBooleanCheckbox ajax事件激发,但侦听器从未执行

selectBooleanCheckbox ajax事件激发,但侦听器从未执行,ajax,listener,Ajax,Listener,selectBooleanCheckbox ajax事件触发,但侦听器从未执行。 如果我删除c:forEach并只调用列表中的第一个,它就会工作 <p:selectBooleanCheckbox value="#{Controller.graphFilter.get(0).checked}" > <p:ajax listener="#{Controller.addMessage}" /> </p:selectBooleanCheckbox>

selectBooleanCheckbox ajax事件触发,但侦听器从未执行。 如果我删除c:forEach并只调用列表中的第一个,它就会工作

<p:selectBooleanCheckbox value="#{Controller.graphFilter.get(0).checked}" >
       <p:ajax listener="#{Controller.addMessage}" />  
</p:selectBooleanCheckbox> 

注: graphFilter是一个列表,其中容器具有用于检查和描述的集合/获取。 控制器是一个可视范围的托管bean。 addMessage公共函数,用于为咆哮放置消息。 一切都是一样的

<h:form id="form" prependId="false">
<p:growl id="growl" showDetail="true"/>

<c:forEach items="#{Controller.graphFilter}" var="Gc">
     <h:outputText value="#{Gc.description}" />  
         <p:selectBooleanCheckbox value="#{Gc.checked}"  >
            <p:ajax listener="#{Controller.addMessage}"/>
         </p:selectBooleanCheckbox>                                       
</c:forEach>
</h:form>

您应该用p:列包装组件:

<p:column>
    <h:outputText value="#{Gc.description}" />  
        <p:selectBooleanCheckbox value="#{Gc.checked}"  >
            <p:ajax listener="#{Controller.addMessage}"/>
        </p:selectBooleanCheckbox>
</p:column>

但是,用一个新的结构替换整个结构会更加优雅