如何在jsf中显示hashmap值?
我有bean“MyBean”,它有属性HashMap – “map”,其值类型是MyClass。 我想使用ui:repeat在jsf中显示map的一些属性。 但是这些代码:
但是这段代码没有显示任何内容。 虽然当我尝试以这种方式在jsp中显示hashmap值时,它是成功的。 哪里错了? 怎么解决这个问题?
从repeat
值属性的文档 :
此标记迭代的项集合的名称。 该集合可以是
List
,数组,java.sql.ResultSet
或单个javaObject
。 如果集合为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}