使用ui:repeat来迭代列

时间:2015-06-02 13:57:59

标签: jsf jsf-2

我在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]

为什么我不能迭代这些列表?

1 个答案:

答案 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>