Ara*_*yan 9 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>
<td><h:outputText value="#{var.value.property2}"></h:outputText></td>
</tr>
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)
但是这段代码没有显示任何内容.虽然当我尝试以这种方式在jsp中显示hashmap值时,它是成功的.哪里错了?怎么解决这个问题?
Bal*_*usC 26
这确实是一个主要的皮塔饼.的<c:forEach>支持Map很长时间.除了提供McDowell建议的另一个吸气剂外,您还可以通过自定义EL功能解决此问题.
<ui:repeat value="#{util:toList(bean.map)}" var="entry">
#{entry.key} = #{entry.value} <br/>
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)
EL功能看起来像这样
public static List<Map.Entry<?, ?>> toList(Map<?, ?> map) {
return = map != null ? new ArrayList<Map.Entry<?,?>>(map.entrySet()) : null;
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您已经使用EL 2.2(由Servfish 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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21375 次 |
| 最近记录: |