【发布时间】:2014-02-11 08:49:47
【问题描述】:
我必须动态生成一个表格列表。每一个都有可变数量的列(具有固定的行)。
要执行此操作,我首先将<p:panelGrid> 放入<ui:repeat>:所以我正确地生成了一个表列表。
然后,为了动态地生成列,我尝试将<ui:repeat> 或<c:forEach> 放在<p:panelGrid> 内。结果我没有得到任何行。
我在这里写了一个最小的例子。在 bean testBackingBean 中,我已经定义(并初始化)了变量 ArrayList<ArrayList<String>> tables。这是没有产生预期结果的 xhtml:
<ui:repeat var="table" value="#{testBackingBean.tables}">
<p:panelGrid>
<f:facet name="header">
<p:row>
<p:column >header of #{table}</p:column>
</p:row>
</f:facet>
<p:row>
<c:forEach var="row" items="${table}">
<p:column>#{row}</p:column>
</c:forEach>
</p:row>
</p:panelGrid>
</ui:repeat>
值得注意的是,标题行正确地将#{table} 转换为字符串。问题是我看不到任何数据行。
另外,如果我使用<table> 而不是<p:panelGrid>,一切都会按预期工作。
另外,我尝试了 <c:forEach> 和 <ui:repeat> 的不同排列,但没有成功。
那么,我怎样才能动态地生成更多的表格(使用素面)并设置动态的列数?
谢谢!
编辑:我想使用两个<c:forEach>,但即使只有一个<c:forEach>,我也会得到一个空结果。事实上,如果我尝试以下 xhtml:
<c:forEach items="${testBackingBean.tables}" var="tabella">
current element: #{tabella}
</c:forEach>
然后我得到一个空的结果。 (我知道,这是一个不同的问题)
【问题讨论】:
标签: jsf jsf-2 primefaces panelgrid