0

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>
4

1 回答 1

0

你应该用 ap:column 包装你的组件:

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

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

于 2012-09-02T06:19:24.357 回答