2013-01-08 96 views
5

监听器在父ui:repeat中触发了p:selectBooleanButton,但是没有为内部/子ui:repeat触发p:selectBooleanButton侦听器。primefaces p:selectBooleanButton侦听器在嵌套的ui中没有被触发:repeat

我们不能使用嵌套窗体。有什么建议么。

<h:form prependId="false"> 
<ui:repeat value="#{xBean.sectionsList}" var="sectionItem"> 
    <p:fieldset> 
    <p:selectBooleanButton onLabel="ON" offLabel="OFF" value="#{sectionItem.checked}"> 
    <p:ajax listener="#{xBean.selectSection}"/> 
    </p:selectBooleanButton> : 
    <ui:repeat value="#{sectionItem.sectionOptionsList}" var="sectionOptionItem">    
    <p:selectBooleanButton onLabel="ON" offLabel="OFF" value="#{sectionOptionItem.checked}"> 
    <p:ajax listener="#{xBean.selectSectionOption}"/> 
    </p:selectBooleanButton> 
    </ui:repeat> 
    </p:fieldset> 
</ui:repeat> 
</h:form> 
+0

我刚刚测试过Primefaces 3.5,我工作得很好。 –

回答

2

<ui:repeat>是视图渲染时间标记。因此,它实际存在于JSF组件树中,并根据需要迭代该值来生成其多次HTML输出。

换句话说,它们(p:selectBooleanButton)需要在视图构建时而不是视图渲染时准备好。

JSTL <c:forEach>是视图构建时间标记。它将在物理上生成多个组件到JSF组件树中。