在我的Java EE 6 / JSF 2项目中,Map
实体中有advantages
属性Employee
:
@ElementCollection
private Map<String, Float> advantages;
键表示优势名称,值表示与优势名称关联的成本。这会映射到包含三列Employee_Id
,Advantages
和Advantages_Key
的表格。我需要在显示<p:dataTable>
的{{1}}中显示所有地图条目。我怎样才能做到这一点?
答案 0 :(得分:18)
如果您的环境支持EL 2.2(Java EE 6),并且以下示例中的#{employee}
来自<p:dataTable var>
,那么应该这样做
<ui:repeat value="#{employee.advantages.entrySet().toArray()}" var="entry">
Name: #{entry.key}, Cost: #{entry.value}
</ui:repeat>
答案 1 :(得分:6)
这对我有用,这是我在bean Map中的地图:
<p:dataTable id="dtbAddedRoles" value="#{controllerUserCreationMain.mapUtil.entrySet().toArray()}"
var="roleAdded">
<p:column headerText="Role">
<p:outputLabel value="#{roleAdded.key.roleName}" />
</p:column>
</p:dataTable>
答案 2 :(得分:-1)
我知道答案为时已晚,但也许对其他人来说这会很有用。
假设您的haspmap定义如下:
HashMap<String, BigDecimal> myHashMap;
public List<Entry<String, BigDecimal>> getMyHashMapEntryList() {
return new ArrayList(myHashMap.entrySet());
}
在您的用户界面中:
<p:dataTable value="#{yourBean.myHashMapEntryList}" var="myEntry">
in here reference as: #{myEntry.key} #{myEntry.value}
</p:dataTable>