使用 ui:repeat 遍历列
Using ui:repeat to iterate over columns
我在 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");
}
}
没用。结果是 table 和 0
列。出了什么问题,有办法解决吗?
我已通过将表达式 #{partnerListController.cols}
放入标记并获取 [Col 1, Col 2]
.
来确保将其解析为非空列表
为什么我不能遍历这样的列表?
使用 c:foreach
而不是 @Kukeltje 建议的 ui:repeat
可能会起作用,但是通过迭代 Collection
创建动态列的正确方法是使用 <rich:columns>
组件。
来自 https://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/rich_columns.html:
The <rich:columns>
component gets a list from data model and outputs
a corresponding set of columns inside <rich:dataTable>
on a page. It
is possible to use "header" and "footer" facets with <rich:columns>
component.
The "value" and "var" attributes are used to access the values of
collection.
<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>
我在 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");
}
}
没用。结果是 table 和 0
列。出了什么问题,有办法解决吗?
我已通过将表达式 #{partnerListController.cols}
放入标记并获取 [Col 1, Col 2]
.
为什么我不能遍历这样的列表?
使用 c:foreach
而不是 @Kukeltje 建议的 ui:repeat
可能会起作用,但是通过迭代 Collection
创建动态列的正确方法是使用 <rich:columns>
组件。
来自 https://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/rich_columns.html:
The
<rich:columns>
component gets a list from data model and outputs a corresponding set of columns inside<rich:dataTable>
on a page. It is possible to use "header" and "footer" facets with<rich:columns>
component.The "value" and "var" attributes are used to access the values of collection.
<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>