2017-07-08 62 views
0

我有一個表示服務提供者的對象。在該對象中我有此HashMap在JSF或Primefaces數據表中編輯hashmap

private Map<MetaDataKeys, String> metaData; 

的「MetaDatatKeys」是枚舉看起來像這樣,

public enum MetaDataKeys { 
    PROVIDER_NAME, PROVIDER_CONTACT_NAME, PROVIDER_SERVICE_RADIUS; 
} 

我想在一個數據表或類似顯示的散列映射鍵/值對編輯,沿線的東西,

  <p:dataTable id="providerDatatable" var="infoMap" value="#{editUserBean.editUser.metaData}"> 
       <p:column><h:outputText value="#{infoMap.key.metaData}"/></p:column> 
       <p:column><h:inputText value="#{infoMap.key.value}"/></p:column> 
      </p:dataTable> 

在我的支持bean「editUser」是包含地圖的對象。

什麼是最好的方式去做這件事?即使讓表格呈現並填充值,我也沒有取得成功。在搜索大多數示例時,使用字符串或基元作爲密鑰。

回答

1

你應該在數據表中迭代Map.entrySet()這是更好的方法。如果您嘗試通過Map.keySet()進行操作並且按鍵取值,則可以取O(n^2)。

爲任務的實現是這樣的:

<p:dataTable id="providerDatatable" var="infoMap" value="#{editUserBean.editUser.metaData.entrySet()}"> 
    <p:column><h:outputText value="#{infoMap.key}"/></p:column> 
    <p:column><h:inputText value="#{infoMap.value}"/></p:column> 
</p:dataTable> 

編輯錶行,你就可以使用p:cellEditor更多信息有關此組件,你可以找到在Primefaces show case

+0

正是我需要的,謝謝! – JHRS

相關問題