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替换整个结构会更优雅。