我在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]
来解析为非空列表。
为什么我不能迭代这样的列表?
使用c:foreach
而不是@Kukeltje建议的ui:repeat
可能会工作,但是通过迭代Collection
来创建动态列的正确方法宁愿使用<rich:columns>
组件。
:
<rich:columns>
组件从数据模型获取列表并输出在页面的<rich:dataTable>
中对应的一组列。它是否可以使用"页眉"one_answers"页脚"方面与<rich:columns>
组件。"value"one_answers"var"属性用于访问的值收集。
<rich:dataTable value="#{testBean.k}" var="partner" id="table" rows="10">
<rich:columns value="#{testBean.cols}" var="name">
<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:columns>
</rich:dataTable>