我在Mojarra 2.1.29
。
我尝试迭代集合以产生等于集合大小的行数。这是我尝试过的:
<rich:dataTable id="table"
var="partner"
rows="10"
value="#{testBean.k}">
<ui:repeat var="name" value="#{testBean.cols}">
<rich:column>
<f:facet name="header">
<h:outputText value="#{name}"/>
</f:facet>
<h:outputText value="#{m.get(partner)}"/>
<f:facet name="footer">
<h:outputText value="#{name}}"/>
</f:facet>
</rich:column>
</ui:repeat>
</rich:dataTable>
testBean.cols
被宣布如下:
public class TestBean{
private List<String> cols = new ArrayList<>();
public TestBean() {
cols.add("Col 1");
cols.add("Col 2");
}
}
它不起作用。结果得到一个包含0
列的表格。出了什么问题,是否有办法解决这个问题?
我已确保将#{partnerListController.cols}
表达式解析为非空列表,方法是将其放入标记并获取[Col 1, Col 2]
。
为什么我不能迭代这些列表?
答案 0 :(得分:2)
使用@Kukeltje建议的c:foreach
代替ui:repeat
可能会有效,但通过迭代Collection
创建动态列的正确方法更倾向于使用{{1组件。
来自https://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/rich_columns.html:
<rich:columns>
组件从数据模型和输出中获取列表 页面上<rich:columns>
内的一组相应列。它 可以使用&#34; header&#34;和&#34;页脚&#34;<rich:dataTable>
的方面 成分&#34;价值&#34;和&#34; var&#34;属性用于访问的值 集合。
<rich:columns>