it-swarm.com.de

Holen Sie sich einen Wert aus der Hashmap basierend auf dem Schlüssel zu JSTL

Ich möchte den Wert von HashMap basierend auf dem Schlüssel erhalten.

HashMap<String, ArrayList<String>> map 
    = new HashMap<String, ArrayList<String>>();
ArrayList<String> arrayList = new ArrayList<String>();

map.put("key", arrayList);
request.setAttribute("key", map);

Was ich getan habe, ist

<c:forEach var="map" items="${requestScope.key}">
    <c:forEach var="hash" items="${map.value}">
        <option><c:out value="${hash}"/></option>
    </c:forEach>
</c:forEach>

Aber es scheint, als würde alles gedruckt. Was ich will, ist, den Wert zu erhalten, hängt von folgenden Schlüsseln ab: hash.key oder etwas

AKTUALISIEREN:
Ich habe so etwas gemacht, aber es funktioniert immer noch nicht

<c:forEach var="map" items="${requestScope.key}">
    <c:forEach var="hash" items="${map['key']}">
        <option><c:out value="${hash}"/></option>
    </c:forEach>
</c:forEach>

und der StackTrace: Property 'External' not found on type Java.util.HashMap$Entry 
Ich bin mir ziemlich sicher, dass es wirklich diese Art von Schlüssel gibt.

41
newbie

wenn Sie lediglich versuchen, den Wert eines einzelnen Eintrags in einer Map abzurufen, müssen Sie keine Sammlung durchlaufen. Um die Antwort von Gautum etwas zu vereinfachen, können Sie den Wert eines benannten Karteneintrags wie folgt abrufen:

<c:out value="${map['key']}"/>

dabei ist "map" die Sammlung und "key" der String-Schlüssel, für den Sie den Wert extrahieren möchten.

83
jason

könnten Sie bitte den folgenden Code ausprobieren

<c:forEach var="hash" items="${map['key']}">
        <option><c:out value="${hash}"/></option>
  </c:forEach>
5
Gautam

Ich hatte ein Problem mit den oben genannten Lösungen, da bei Angabe des Zeichenfolgenschlüssels javax.el.PropertyNotFoundException angezeigt wurde. Der unten gezeigte Code hat für mich funktioniert. In diesem Status habe ich den Index für jede Schleife gezählt und den Wert des Index angezeigt, für den ich mich interessiere

<c:forEach items="${requestScope.key}"  var="map" varStatus="status" >
    <c:if test="${status.index eq 1}">
        <option><c:out value=${map.value}/></option>
    </c:if>
</c:forEach>    
0
MR AND