如何在jsf中显示hashmap值?

我有bean“MyBean”,它有属性HashMap – “map”,其值类型是MyClass。 我想使用ui:repeat在jsf中显示map的一些属性。 但是这些代码:

        

但是这段代码没有显示任何内容。 虽然当我尝试以这种方式在jsp中显示hashmap值时,它是成功的。 哪里错了? 怎么解决这个问题?

repeat值属性的文档 :

此标记迭代的项集合的名称。 该集合可以是List ,数组, java.sql.ResultSet或单个java Object 。 如果集合为null,则此标记不执行任何操作。

因此,var被设置为您的HashMap ,EL尝试在其上查找键"value" 。 您需要将条目集公开为List

这确实是一个主要的皮塔饼。 长时间支持 Map 。 除了提供McDowell建议的另一个吸气剂外,您还可以通过自定义ELfunction解决此问题。

  #{entry.key} = #{entry.value} 

ELfunction看起来像这样

 public static List> toList(Map map) { return = map != null ? new ArrayList>(map.entrySet()) : null; } 

或者,如果您已经使用EL 2.2(由Servfish 3.0兼容的容器提供,例如Glassfish 3,Tomcat 7等),那么只需使用Map#entrySet()然后使用Set#toArray()

  #{entry.key} = #{entry.value}