小编典典

在JSF2.0中动态创建和填充DataTable

java

我那里有点问题。当我想在JSF中填充DataTable时,我必须先创建一个模型,然后在我的视图中使用它。就像这里的
Primefaces示例一样。

现在,我必须创建DataTable来显示来自Web服务的数据。我不知道会有多少列,我也不知道它们的名称…您能推荐一些明智的解决方案吗?

PS。我也不知道如何从Web服务中返回数据-尚待确定。


编辑

public Bean() {
    columns = new ArrayList<String>();  
    rows = new ArrayList<Map<String, Object>>();         
    populateColumns(columns,4);

    for(int i = 0 ; i < 6 ; i++)  
    {               
        Map<String,Object> m = new HashMap<String,Object>();
        m.clear();          
        for(int j = 0 ; j < 4 ; j++)  
        {
            m.put("Column" + j, "sth" + j + i);
        }                                               
        rows.add(m);
    }       
}

private void populateColumns(List<String> list, int size) {  
    for(int i = 0 ; i < size ; i++)  
        list.add("Column" + i);
}

阅读 211

收藏
2020-09-26

共1个答案

小编典典

收集List<Map<String, Object>>中代表rows属性的数据。的Map表示列,由列名键控(如果必要的话,就自动生成如column1column2column3等通过"column" + i)。将那些列名称收集在一个单独的List<String>代表columns属性的名称中。最后通过以下方式显示它<p:columns>

<p:dataTable value="#{bean.rows}" var="row">
    <p:columns value="#{bean.columns}" var="column">
        #{row[column]}
    </p:columns>
</p:dataTable>
2020-09-26