我必须动态地生成一个表格列表。每一个都有可变数量的列(具有固定的行)。
要执行此操作,我首先将 a<p:panelGrid>
放入<ui:repeat>
: 中,因此我正确生成了一个表格列表。
然后,为了动态地生成列,我尝试将 a <ui:repeat>
或 a 都<c:forEach>
放在<p:panelGrid>
. 结果我没有得到任何行。
我在这里写了一个最小的例子。在 beantestBackingBean
中,我已经定义(并初始化)了变量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>
然后我得到一个空的结果。(我知道,这是一个不同的问题)