2013-01-08 94 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組件樹中。