Это действительно большая пита.<c:forEach>
поддерживается Map
долго.Помимо предоставления другого геттера, предложенного Макдауэллом, вы также можете обойти это с помощью пользовательской функции EL .
<ui:repeat value="#{util:toList(bean.map)}" var="entry">
#{entry.key} = #{entry.value} <br/>
</ui:repeat>
, где функция EL выглядит следующим образом
public static List<Map.Entry<?, ?>> toList(Map<?, ?> map) {
return = map != null ? new ArrayList<Map.Entry<?,?>>(map.entrySet()) : null;
}
Или, если вы уже используете EL 2.2 (предоставляется серверами, совместимыми с Servlet 3.0, такими как Glassfish 3, Tomcat 7 и т. Д.), Просто используйте Map#entrySet()
, а затем Set#toArray()
.
<ui:repeat value="#{bean.map.entrySet().toArray()}" var="entry">
#{entry.key} = #{entry.value} <br/>
</ui:repeat>