2015-06-02 2 views
0

Я в Mojarra 2.1.29.Использование ui: повторить для повторения столбцов

Я попытался выполнить итерацию по коллекции, чтобы произвести количество строк, равное размеру коллекции. Вот что я пытался:

<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

попытался с помощью C: Еогеасп вместо Ui: повторить? – Kukeltje

ответ

2

Использование c:foreach вместо ui:repeat как предложено @Kukeltje вероятно, будет работать, но правильный способ для создания динамических столбцов итерации по Collection предпочел бы быть с помощью <rich:columns> компонента.

От https://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/rich_columns.html:

<rich:columns> компонент получает список от модели и выходов соответствующий набор столбцов внутри <rich:dataTable> на странице данных. Это можно использовать фасеты «header» и «footer» с <rich:columns> .

Атрибуты "value" и "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> 
+0

Замечательный ... несколько месяцев назад для другой должности SO, я искал это, но не нашел его (я не являюсь пользователем РФ) и был удивлен, что его там не было. Полезно знать – Kukeltje

+0

Прохладный, спасибо. – user3663882