2017-11-13 6 views
1

Ich habe eine Hashmaps wie Map<String, List<String>> coverageDataMap. Ich muss anhand eines Schlüssels durch die Liste iterieren.Iteration durch eine Arraylist in einer Hashmaps basierend auf Schlüssel in JSTL

ich es die folgende Art und Weise so mache:

<c:forEach items="${bean.coverageDataMap['my_key']}" 
      var="entry" varStatus="loop"> 
     <tr> 
      <td><h:outputText value="#{loop.index+1}"/></td> 
      <td><h:outputText value="#{entry}"/></td> 
     </tr> 
    </c:forEach> 

es existiert leider nicht. Ich habe mich umgesehen, konnte aber nichts finden. Bitte lass mich wissen, was ich hier falsch gemacht habe! Vielen Dank.

Antwort

1

Bitte versuchen Sie es

$ 

stattdessen zu verwenden, wenn

# 
1

einen Testlauf mit folgendem Code, je nach Bedarf arbeiten. Überprüfen Sie, ob der "my_key" gesetzt ist.

test.xhtml

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" 
    xmlns:h="http://xmlns.jcp.org/jsf/html" 
    xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"> 
<h:head> 
    <title>Test</title> 
</h:head> 
<h:body> 
    Key is set:<h:outputText value="${bean.coverageDataMap['my_key'] ne null}"/> 
    <br/> 
    <br/> 
    <c:forEach items="${bean.coverageDataMap['my_key']}" 
       var="entry" varStatus="loop"> 
     <tr> 
      <td><h:outputText value="#{loop.index+1}"/></td> 
      <td><h:outputText value="#{entry}"/></td> 
     </tr> 
    </c:forEach> 
</h:body> 

TestBean.java

@ManagedBean(name = "bean") 
@RequestScoped 
public class TestBean implements Serializable{ 

private static final long serialVersionUID = 1L; 

Map<String, List<String>> coverageDataMap; 

public TestBean() { 
    coverageDataMap = new HashMap<>(); 
    ArrayList<String> list = new ArrayList<>(); 
    for (int i = 1; i <= 10; i++) { 
     list.add("hello" + i); 
    } 
    coverageDataMap.put("my_key", list); 
} 

public Map<String, List<String>> getCoverageDataMap() { 
    return coverageDataMap; 
} 

public void setCoverageDataMap(Map<String, List<String>> coverageDataMap) { 
    this.coverageDataMap = coverageDataMap; 
} 
} 
+0

Aus irgendeinem seltsamen Grund, es nicht mit dem Tag arbeiten, aber funktioniert gut, wenn ich c: out Etikett. –

+0

Scheint ein Problem mit der JSTL-Version, wie hier beschrieben (https://stackoverflow.com/questions/13197016/jstl-cforeach-does-not-iterate-through-a-collection) –

Verwandte Themen