Java 如何在jsf中显示hashmap值?
我有一个bean“MyBean”,它有属性HashMap——“map”,它的值类型是MyClass。我想使用ui:repeat在jsf中显示map的一些属性。 但这些代码:Java 如何在jsf中显示hashmap值?,java,jsf,hashmap,uirepeat,Java,Jsf,Hashmap,Uirepeat,我有一个bean“MyBean”,它有属性HashMap——“map”,它的值类型是MyClass。我想使用ui:repeat在jsf中显示map的一些属性。 但这些代码: <ui:repeat var="var" value="#{mybean.map}" > <tr> <td> <h:outputText value="#{var.value.property1}"></h:outputText> </td> &l
<ui:repeat var="var" value="#{mybean.map}" >
<tr>
<td> <h:outputText value="#{var.value.property1}"></h:outputText> </td>
<td><h:outputText value="#{var.value.property2}"></h:outputText></td>
</tr>
</ui:repeat>
但是这个代码没有显示任何内容。虽然当我尝试以这种方式在jsp中显示hashmap值时,它是成功的。我错在哪里?如何解决此问题?对于repeat
value属性:
此标记迭代的项集合的名称。集合可以是列表
、数组、java.sql.ResultSet
,也可以是单个java对象
。如果集合为null,则此标记不执行任何操作
因此,var被设置为您的
HashMap
,EL尝试在其上查找键“value”
。您需要将条目集公开为一个列表
,这确实是一个主要的pita。
长期支持Map
。除了按照McDowell的建议提供另一个getter之外,您还可以通过一个新的方法来解决这个问题
#{entry.key}=#{entry.value}
EL函数是这样的
公共静态列表>(map.entrySet()):null;
}
或者,如果您已经在EL2.2上(由与Servlet 3.0兼容的容器提供,如Glassfish 3、Tomcat 7等),那么只需使用
Map#entrySet()
,然后使用Set#toArray()
#{entry.key}=#{entry.value}
(@Aram:您需要在普通文本和代码块之间放置一条空行,否则格式不正确)@Mat:好的,谢谢。我不知道。@Aram Gevorgyan-likedataTable
,repeat
是一个基于索引的组件(请参见偏移量和大小属性)。Adam Winer(他是JSF专家组的成员)在这里讨论了一个类似的案例:“{util:toList(bean.map)}
”,您的语法是util
托管bean,BalusC?我以前从未见过这种语法。@Thang:这是一个EL函数:它类似于JSTL函数。在的命名空间中也有一些,请参见的:mapToList()
。