<p:dataTable><p:columns>中使用List<List>实现动态列

4

我正在尝试动态生成包含列的 dataTable,因此我有一个List<List>,其中 List 中的每个元素都是我的列的内容,但是当我尝试显示它时,无法显示太多内容。

所以,这是我的Bean的代码:

@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
---------------

我做错了什么?

正确的方式是什么?

1个回答

5
<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> 展示页面


谢谢您的快速回答,但我得到的值是一行一行的,第一行:0 1 24,第二行:5 1 34,第三行:12 1 4 - Cristian
好的,只需相应地修复模型,以便它返回视图所期望的内容。 - BalusC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接