2017-07-08 52 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

相关问题