我在使用ui repeat和数据网格以及其他ui在此网格中重复时遇到问题
这是我的代码
<ui:repeat var="blockSpace" value="#{providersMB.fillBlockSpaceRsv}" >
<p:panelGrid style="margin-top:20px" rendered="#{providersMB.blockSpace}">
<f:facet name="header">
<p:row>
<p:column>
<h:outputLabel value="#{blockSpace.company}" />
</p:column>
<p:column>#{label['displayOrders.label.businessClass']}/p:column>
<p:column>#{label['displayOrders.label.yankeeClass']}</p:column>
</p:row>
</f:facet>
<p:row>
<p:column>#{label['displayOrders.label.reservation']}</p:column>
<p:column><p:spinner id="basic" value="#{spinnerView.number1}" />
</p:column>
<p:column>
<p:spinner id="spinner" value="#{spinnerView.number1}" />
</p:column>
</p:row>
<p:row>
<p:column>#{label['displayOrders.label.configuration']}</p:column>
<ui:repeat var="blockSpaceCabin"
value="#{blockSpace.blockSpaceCabin}" >
<p:column> <h:outputLabel value="#{blockSpaceCabin.quantity}"/>
</p:column>
</ui:repeat>
</p:row>
</p:panelGrid>
第二个uirepeat的值没有显示。
答案 0 :(得分:0)
ui:在视图渲染时间内重复运行,而p:panelGrid在视图构建时运行。 PanelGrid会在视图构建期间期望它们的子元素,但由于它们在渲染时可用,因此它会失败。
在第二个ui上尝试这个:重复。改变ui:用c:forEach重复
<c:forEach items="#{blockSpace.blockSpaceCabin}" var="blockSpaceCabin">
<p:column>
<h:outputLabel value="#{blockSpaceCabin.quantity}"/>
</p:column>
</c:forEach>
您也可以在此处使用BalusC的帖子: c:forEach inside primefaces(e.g. p:panelgrid) inside ui:repeat
另一方面,由于你有一个3列的布局,你不能在#{blockSpace.blockSpaceCabin}中有两个以上的元素,所以你可以在第一个forEach中定义的blockSpace元素上将它们设置为#{ providersMB.fillBlockSpaceRsv}。最好不要将jstl标签与jsf混合使用,以免让人高枕无忧。