在JSF页面中显示HashMap条目的键和值

Swe*_*ety 17 jsf hashmap

我想HashMap在JSF UI中显示键及其相关值.

我怎样才能做到这一点?我如何HashMap使用一些迭代器组件迭代在JSF页面中<h:datatable>

Jig*_*shi 35

<c:forEach>支持Map.每次迭代都会Map.Entry返回一个实例(就像在普通的Java for循环中一样).

<c:forEach items="#{yourBean.map}" var="entry">
    <li>Key: #{entry.key}, value: #{entry.value}</li>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

<h:dataTable>(和<ui:repeat>)只支持List(JSF 2.2将配备Collection支持).您可以单独复制所有键,List然后迭代它,然后使用迭代键[]在EL中使用相关值.

private Map<String, String> map;
private List<String> keyList;

public void someMethodWhereMapIsCreated() {
    map = createItSomeHow();
    keyList = new ArrayList<String>(map.keySet());
}

public Map<String, String> getMap(){
     return map;
}

public List<String> getKeyList(){
     return keyList;
}
Run Code Online (Sandbox Code Playgroud)
<h:dataTable value="#{yourBean.keyList}" var="key"> 
    <h:column> 
        Key: #{key}
    </h:column> 
    <h:column> 
        Value: #{yourBean.map[key]}
    </h:column> 
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)

注意到a HashMap本质上是无序的.如果您想维护插入顺序,请使用List,而不是使用LinkedHashMap.

  • BalusC的修正案对我来说是+1 BalusC的关键 (3认同)