使用两个嵌套列表显示dataTable

时间:2017-05-17 10:12:59

标签: java jsf primefaces jsf-2 datatable

我有List<List<String>>,我正在尝试在Primefaces / JSF dataTable中显示数据。列表看起来像这样:

[["1_1", "1_2", "1_3"], ["2_1", "2_2", "2_3"], ["3_1", "3_2", "3_3"]]

结果表需要如下所示:

1_1 | 1_2 | 1_3
________________
2_1 | 2_2 | 2_3
________________
3_1 | 3_2 | 3_3

可能我需要像ui:repeat这样的东西,但遗憾的是我无法找到解决方案。我是JSF和primefaces的新手,所以我希望你的理解。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试此解决方案,我同时使用了html <table>和JSF <h:dataTable>

@ManagedBean
public class MyBean {
    private List<List<String>> list = new ArrayList<List<String>>();

    public MyBean(){
        for(int i=1; i <=3; i++){
            List<String> newList = new ArrayList<String>();
            for(int x=1; x <=3; x++){
                newList.add(i + "_" + x);
            }
            list.add(newList);
        }
    }
    public List<List<String>> getList(){
        return list;
    }
}

使用<table><ui:repeat>

<table>
  <ui:repeat var="list" value="#{myBean.list}">
    <tr>
    <ui:repeat var="newlist" value="#{list}">
      <td>#{newlist}</td>
    </ui:repeat>
    </tr>
  </ui:repeat>
</table>

使用<h:dataTable>,列表中的每个List<String>必须具有相同的尺寸,否则您将获得IndexOutOfBoundsException

<h:dataTable value="#{myBean.list}" var="list">
  <h:column>
    #{list.get(0)}
  </h:column>
  <h:column>
    #{list.get(1)}
  </h:column>
  <h:column>
    #{list.get(2)}
  </h:column>
</h:dataTable>