【问题标题】:jsf iterate over hashmapjsf 遍历 hashmap
【发布时间】:2013-06-20 10:13:25
【问题描述】:

关于迭代 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());
                }
            }
        }
    }
}

有人能指出我在做什么错吗?

【问题讨论】:

  • 您可以发布答案并接受它,而不是添加solved 和问题的解决方案。
  • 我确实为问题添加了解决方案。如果您看到已编辑的帖子,则无法弄清楚如何发布自己帖子的答案
  • 看到下面的按钮Answer Your Question了吗?

标签: jsf hashmap iteration


【解决方案1】:

(OP 在问题编辑中回答的问题。转换为社区 wiki 答案。请参阅Question with no answers, but issue solved in the comments (or extended in chat)

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>

【讨论】:

    猜你喜欢
    • 2011-10-23
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 2022-01-16
    • 2015-02-13
    • 2015-10-26
    相关资源
    最近更新 更多