我那里有点问题。当我想在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); }
收集List<Map<String, Object>>中代表rows属性的数据。的Map表示列,由列名键控(如果必要的话,就自动生成如column1,column2,column3等通过"column" + i)。将那些列名称收集在一个单独的List<String>代表columns属性的名称中。最后通过以下方式显示它<p:columns>:
List<Map<String, Object>>
rows
Map
column1
column2
column3
"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>