5

为父 ui:repeat 中的 p:selectBooleanButton 触发侦听器,但不会为内部/子 ui:repeat 触发 p:selectBooleanButton 的侦听器。

我们不能使用嵌套形式。有什么建议么。

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

1 回答 1

2

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

换句话说,they(p:selectBooleanButton) 需要在视图构建期间而不是视图渲染期间进行准备。

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

于 2013-04-24T12:11:04.300 回答