JSF h:panelGrid和ui:repeat

JSF h:panelGrid和ui:repeat,jsf,uirepeat,Jsf,Uirepeat,我的问题是ui:在h:panelGrid中重复。 这是一张从物品列表中挑选出来的大桌子。。所有对象都保存在一个列表中 我试过这个: <h:panelGrid columns="1000"> <ui:repeat var="item" value="#{item.list}"> <h:outputText value="#{item.string}" /> </ui:repeat> </h:panelGrid>

我的问题是ui:在h:panelGrid中重复。 这是一张从物品列表中挑选出来的大桌子。。所有对象都保存在一个列表中

我试过这个:

<h:panelGrid columns="1000">
  <ui:repeat var="item" value="#{item.list}">
     <h:outputText value="#{item.string}" />
   </ui:repeat>
</h:panelGrid>

但在panelGrid中,ui:repeat标记是网格的一列。因此,所有项目都在一个td标签中


是否有可能获得正确的列计数?

在这种情况下,您可以使用
c:forEach
而不是
ui:repeat
c:forEach
将在组件树中为列表中的每个项目生成一个单独的
UIOutputText
组件


有关
c:forEach
ui:repeat
之间差异的更多信息,请参阅在这种情况下,您可以使用
c:forEach
而不是
ui:repeat
c:forEach
将在组件树中为列表中的每个项目生成一个单独的
UIOutputText
组件


有关
c:forEach
ui:repeat
之间差异的更多信息,请参阅

一般来说,混合使用JSTL和JSF是个坏主意。尝试使用为此目的而设计的组件,如
rich:dataGrid
p:dataGrid
p:dataList
@Thor。在本例中,JSF和facelet是混合的。Facelets只提供JSTL标记子集的实现,所以Facelets纯粹使用标记处理程序来处理它。当然,理解标记处理程序和组件之间的区别是很重要的,但是混合使用也可以。例如,ui:include、ui:decoration、ui:composition、任何自定义标记文件都不是JSTL的一部分,而是标记处理程序,因此它们与c:forEach具有完全相同的性质(有关更多详细信息,请参阅我回答中的链接)。一般来说,混合JSTL和JSF是一个坏主意。尝试使用为此目的而设计的组件,如
rich:dataGrid
p:dataGrid
p:dataList
@Thor。在本例中,JSF和facelet是混合的。Facelets只提供JSTL标记子集的实现,所以Facelets纯粹使用标记处理程序来处理它。当然,理解标记处理程序和组件之间的区别是很重要的,但是混合使用也可以。例如,ui:include、ui:decoration、ui:composition、任何自定义标记文件都不是JSTL的一部分,而是标记处理程序,因此它们与c:forEach具有完全相同的性质(有关更多详细信息,请参阅我回答中的链接)。