在primefaces数据表中显示键和值Map

时间:2013-12-02 10:36:35

标签: jsf-2 primefaces map

在我的Java EE 6 / JSF 2项目中,Map实体中有advantages属性Employee

@ElementCollection
private Map<String, Float> advantages;

键表示优势名称,值表示与优势名称关联的成本。这会映射到包含三列Employee_IdAdvantagesAdvantages_Key的表格。我需要在显示<p:dataTable>的{​​{1}}中显示所有地图条目。我怎样才能做到这一点?

3 个答案:

答案 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>