簡體   English   中英

如何在jsf中顯示hashmap值?

[英]How to show hashmap values in jsf?

我有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>

但是這段代碼沒有顯示任何內容。 雖然當我嘗試以這種方式在jsp中顯示hashmap值時,它是成功的。 哪里錯了? 怎么解決這個問題?

這確實是一個主要的皮塔餅。 <c:forEach>支持Map 除了提供McDowell建議的另一個吸氣劑外,您還可以通過自定義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(由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>

repeat值屬性的文檔

此標記迭代的項集合的名稱。 該集合可以是List ,array, java.sql.ResultSet或單個java Object 如果集合為null,則此標記不執行任何操作。

因此,var設置為您的HashMap ,EL嘗試在其上查找鍵"value" 您需要將您的條目集公開為List

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM