我在爲myBean一個HashMap:如何顯示的HashMap的數據表
private ArrayList<HashMap<String,Object>> searchResult;
,我可以成功地顯示來自其數據表:
<p:dataTable id="resultTable" var="result" value="#{myBean.searchResult}">
<p:column headerText="Name">
<h:outputText value="#{result.NAME}" />
</p:column>
<p:column headerText="Amount">
<h:outputText value="#{result.AMOUNT}" />
</p:column>
<p:column headerText="Date1">
<h:outputText value="#{result.DATE1}" />
</p:column>
<p:column headerText="Date2">
<h:outputText value="#{result.DATE2}" />
</p:column>
</p:dataTable>
問題是,我不知道HashMap將具有多少個鍵(DATE1,DATE2,... DATE N)。 如何使用所有值和它們的鍵作爲標題創建這樣一個dataTable?
UPD。 比較從下面的答案中展示Cars,不同之處在於,Class Car具有品牌,年份,顏色等屬性,但就我而言,在執行之前您並不知道所有列。所以我稍微修改了一個例子。也許有人會發現我的解決方案有用。
myForm.xhtml(同實施例中):
<p:dataTable id="searchResults" var="result" value="#{myBean.searchResult}">
<p:columns value="#{myBean.columns}" var="column" columnIndexVar="colIndex">
<f:facet name="header">
<h:outputText value="#{column.header}" />
</f:facet>
<h:outputText value="#{result[column.property]}" />
</p:columns>
</p:dataTable>
myBean.java(ColumnModel一樣在示例陳列櫃):
private ArrayList<HashMap<String,Object>> searchResult;
private List<ColumnModel> columns;
private void createColumns(ArrayList<String> selectedDates){
columns = new ArrayList<ColumnModel>();
columns.add(new ColumnModel("Name", "NAME"));
columns.add(new ColumnModel("Amount", "AMOUNT"));
for (int i = 0; i < selectedDates.size(); i++) {
columns.add(new ColumnModel(selectedDates.get(i), "DATE" + i));
}
setColumns(columns);
}
可能的重複[顯示哈希圖鍵和值在primefaces數據塔ble](http://stackoverflow.com/questions/9074177/displaying-hashmap-keys-and-values-in-a-primefaces-datatable) –