我有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的新手,所以我希望你的理解。
有人可以帮忙吗?
答案 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>