Динамические столбцы со списком‹Список› в ‹p:dataTable›‹p:columns›

Я пытаюсь динамически сгенерировать dataTable со столбцами, поэтому у меня есть List<List>, когда List внутри List является содержимым моего столбца, но когда я пытаюсь показать это, я не могу отображать немного.

Итак, это код моего Бина:

@ManagedBean
@javax.faces.bean.ViewScoped
public class Controlador {

   private List<List> estadistico;

   @PostConstruct
   public void inicializar(){
      this.estadistico = new ArrayList<List>();

      this.estadistico.add(  Arrays.asList( new Integer[]{0,1,24})); 
      this.estadistico.add(  Arrays.asList( new Integer[]{5,1,34})); 
      this.estadistico.add(  Arrays.asList( new Integer[]{12,1,4})); 

   }
   //getter's and setter's
}

А это вид:

<h:form>
    <!-- estadistico is  List<List> -->
    <p:dataTable value="#{controlador.estadistico}" var="lista">
        <!-- lista is List of numbers
             and I suppose that value is each number
         -->
        <p:columns value="#{lista}" var="value" >
               #{value}
        </p:columns>
    </p:dataTable>
</h:form>

Я ожидал что-то вроде:

---------------
0     5    12 
---------------
1     1    1
---------------
24    34   4
---------------

Что я делаю неправильно?

Каков правильный путь?


person Cristian    schedule 15.11.2013    source источник


Ответы (1)


<p:columns value> не может ссылаться на <p:dataTable var>. Технически и логически невозможно управлять столбцами для каждой строки. Они должны контролироваться для каждой таблицы.

Если ваша модель гарантирует, что все вложенные списки имеют одинаковый размер, то это должно делаться так:

<p:dataTable value="#{controlador.estadistico}" var="lista">
    <p:columns value="#{controlador.estadistico[0]}" columnIndexVar="i">
        #{lista[i]}
    </p:columns>
</p:dataTable>

См. также <p:columns> пример.

person BalusC    schedule 15.11.2013
comment
Спасибо, что вы ответили быстрее, но я получаю такие значения, как строка, строка 1: 0 1 24 строка 2: 5 1 34 и строка 3: 12 1 4 - person Cristian; 15.11.2013
comment
Хорошо, просто исправьте модель соответствующим образом, чтобы она возвращала именно то, что ожидает представление. - person BalusC; 15.11.2013