<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;
}
Отмечается, что a HashMap по своей природе неупорядочен. Если вы хотите сохранить порядок вставки, например, как List, вместо этого используйте LinkedHashMap.