【问题标题】:Creating and populating a DataTable dynamically in JSF2.0在 JSF2.0 中动态创建和填充 DataTable
【发布时间】:2012-12-07 20:41:01
【问题描述】:

我有一个小问题。当我想在 JSF 中填充 DataTable 时,我必须先创建一个模型,然后在我的视图中使用它。就像在 Primefaces 样本上一样 here

现在,我必须创建将显示来自 web 服务的数据的 DataTable。我不知道会有多少列,我不知道他们的名字......你能推荐一些明智的解决方案吗?

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);
}  

【问题讨论】:

    标签: java web-services jsf jsf-2 primefaces


    【解决方案1】:

    在代表rows 属性的List&lt;Map&lt;String, Object&gt;&gt; 中收集数据。 Map 代表列,以列名称为键(如有必要,由"column" + i 自动生成,例如column1column2column3 等)。将这些列名收集到一个单独的 List&lt;String&gt; 中,它代表 columns 属性。最后通过&lt;p:columns&gt;展示如下:

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

    【讨论】:

    • 太棒了.. 谢谢,但是如何获取列标题?这是我在问题编辑中的 bean。仅缺少标题。
    • 使用&lt;p:columns headerText="#{column}"&gt;。或者,如果您在单独的 Map&lt;String, String&gt; 中有标题名称,则类似于 &lt;p:columns headerText="#{bean.headers[column]}"&gt;
    • 再次感谢。第一个选项工作正常。但第二...我声明这样的标题: List> headers;使用 public 创建 getter 和 setter,但 headerText="#{browserBean.headers[column]}" 不起作用:/
    • 当我写:headerText="#{browserBean.headers[2]}" 我进入列:{c2=Column name 2},其中 c2 是我的列 id..
    • 为什么标题需要这样?请改用Map&lt;String,String&gt;List&lt;String&gt;。否则你需要一个奇怪的#{browserBean.headers[2][column]}
    猜你喜欢
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2010-10-28
    相关资源
    最近更新 更多