[英]jsf iterate over hashmap
關於遍歷hashmap列表的問題已被問過很多次,並嘗試過相同的解決方案,但無法正常工作。 我正在嘗試在hasmap中顯示值,但在jsf頁面上不起作用(我正在使用jsf2.1)。 當我嘗試在Java中進行迭代時,它會顯示所有值,因此我知道map不是空的。 這就是我在@BalusC解決方案的幫助下嘗試過的方法
<ui:repeat var="aClip" value="#{manageClipModel.clipList}">
<ui:repeat value="#{aClip.revisions}" var="revs">
rev id <h:outputText value="#{revs.revId}"/> //dispalys value
map len #{fn:length(revs.metadataMap.entry)} //displays right size of map
<c:forEach items="#{revs.metadataMap.entry}" var="entry">
key <h:outputText value="#{abc.key}"/> //does not iterate this loop
</c:forEach>
</ui:repeat>
在Java中,值正確顯示
for (Clip aClip : clipList) {
System.out.println("comment " + aClip.getComment() + " clip id " + Clip.getClipId());
List<Revision> revs = aClip.getRevisions();
System.out.println("rev size"+revs.size());
if (revs != null && !revs.isEmpty()) {
for (Revision aRev : revs) {
System.out.println("metadata map size " + aRev.getMetadataMap().getEntry().size());
Iterator itr = aRev.getMetadataMap().getEntry().listIterator();
while (itr.hasNext()) {
Revision.MetadataMap.Entry entry = (Revision.MetadataMap.Entry) itr.next();
System.out.println("key " + entry.getKey());
System.out.println("value " + entry.getValue().getValues().toString());
}
}
}
}
}
有人可以指出我在做什么錯嗎?
(由OP在問題編輯中回答的問題。已轉換為社區Wiki答案。請參閱無答案的問題,但問題已在評論中解決(或擴展為聊天) )
OP寫道:
解決了我錯過了Java代碼
listIterator
循環的一個步驟。
<ui:repeat value="#{aClip.revisions}" var="revs">
<ui:repeat value="#{revs.metadataMap.entry}" var="entryLst">//was missing this loop
<ui:repeat value="#{entryLst}" var="entry">
<ui:repeat value="#{entry.value}" var="metaVal">
changedFromPrevious - <h:outputText value="#metaVal.changedFromPrevious}"/>
key - <h:outputText value="#{metaVal.key}"/>
<ui:repeat value="#{metaVal.values}" var="aValue">
<h:outputText value="#{aValue}"/>
</ui:repeat>
</ui:repeat>
</ui:repeat>
</ui:repeat>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.