selectBoolean复选框ajax事件触发,但侦听器从未执行



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:column:包装组件

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

但是用p:dataList替换整个结构会更优雅。

最新更新