我有一个代表服务提供者的对象。在那个对象中我有这个hashmap
private Map<MetaDataKeys, String> metaData;
&#34; MetaDatatKeys&#34;是一个看起来像这样的枚举,
public enum MetaDataKeys {
PROVIDER_NAME, PROVIDER_CONTACT_NAME, PROVIDER_SERVICE_RADIUS;
}
我想在数据表或类似的数据库中显示hashmap键/值对进行编辑,其中包含一些内容,
<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&#34; editUser&#34;是包含地图的对象。
最好的方法是什么?我甚至没有成功地让表格渲染和填充值。在搜索大多数示例时,请使用字符串或基元作为键。
答案 0 :(得分: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