selectBooleanCheckbox ajax事件触发但从不执行侦听器。 如果我删除c:forEach并且只是调用列表中的第一个就可以了。
<p:selectBooleanCheckbox value="#{Controller.graphFilter.get(0).checked}" >
<p:ajax listener="#{Controller.addMessage}" />
</p:selectBooleanCheckbox>
注释: graphFilter是一个列表,其中容器具有用于检查和描述的集合/获取。 controller是一个viewscoped托管bean。 addMessage公共函数,为growl发送消息。 一切都是一样的。
<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>
答案 0 :(得分:0)
您应该使用p:列包装组件:
<p:column>
<h:outputText value="#{Gc.description}" />
<p:selectBooleanCheckbox value="#{Gc.checked}" >
<p:ajax listener="#{Controller.addMessage}"/>
</p:selectBooleanCheckbox>
</p:column>
但用p:dataList替换整个结构会更优雅。