Tengo un mapa de hash como Map<String, List<String>> coverageDataMap. Necesito iterar a través de la lista devuelta en función de una clave.

Lo estoy haciendo de la siguiente manera:

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

Desafortunadamente, no funciona. Miré a mi alrededor pero no pude encontrar nada. ¡Por favor, avíseme en qué me equivoqué aquí! Gracias.

1
आनंद 13 nov. 2017 a las 16:48

2 respuestas

La mejor respuesta

Intenta usar

$

En cambio si

#
1
Ivan 13 nov. 2017 a las 14:46

Ejecute una prueba con el siguiente código, funcionando según sea necesario. Compruebe si "my_key" está configurado.

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;
}
}
1
Shivam Semwal 13 nov. 2017 a las 14:53