0

ハッシュマップのリストの繰り返しに関する質問が何度も寄せられ、同じ解決策を試みましたが、うまくいきませんでした。hasmap 内に値を表示しようとしていますが、jsf ページでは機能しません (jsf2.1 を使用しています)。Javaで反復しようとすると、すべての値が表示されるため、マップが空ではないことがわかります。これは、@ 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());
                }
            }
        }
    }
}

誰かが私がやっていることを指摘できますか?

4

1 に答える 1

0

(質問編集でOPが回答した質問。コミュニティwikiの回答に変換されました。回答がない質問を参照してください。ただし、コメントで問題が解決されました(またはチャットで拡張されました)

OP は次のように書いています。

listIteratorJava コードからのループである 1 つのステップが欠落していたのを解決しました。

<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>
于 2015-01-28T20:04:24.607 に答える