2012-09-20 5 views
13

Ich habe eine Map in EL als ${map} und ich versuche, den Wert davon mit einem Schlüssel, der an sich ist auch eine EL-Variable ${key} mit dem Wert "1000".Zugriff Karte Wert in EL mit einer Variablen als Schlüssel

Mit ${map["1000"]} funktioniert, aber ${map["$key"]} funktioniert nicht. Was mache ich falsch und wie kann ich den Map Wert mit einer Variablen als Schlüssel bekommen?

+1

$ hilft ist nicht der Anfang eines Variablennamens, sondern gibt den Beginn eines Ausdrucks an. –

Antwort

-4

Ich denke, dass Sie Ihre Karte so etwas wie zugreifen sollte:

${map.key} 

und überprüfen einige Tutorials über jstl wie 1 und 2 (etwas veraltet, aber immer noch funktionsfähig)

+0

Ich versuchte $ {map. $ Key}, aber es funktionierte nicht – user1643001

+0

Nicht $ {map. $ key}, nur $ {map.key} – Nickmancol

19

$ ist nicht die Beginn eines Variablennamens, zeigt den Beginn eines Ausdrucks an. Sie sollten ${map[key]} verwenden, um auf die Eigenschaft key in Karte map zuzugreifen.

Sie können es versuchen, auf einer Seite mit einem GET Parameter, für den folgenden Abfrage-String mit Beispiel ?whatEver=something

<c:set var="myParam" value="whatEver"/> 
whatEver: <c:out value="${param[myParam]}"/> 

erhalten Sie folgende Ausgabe:

whatEver: something 

See: https://stackoverflow.com/tags/el/info und navigieren Sie zu dem Abschnitt "Klammernotation".

+0

Lösung funktioniert nicht: -/ –

+0

Etwas anderes ist dann falsch. Ich habe das Beispiel in meinem Beitrag getestet, um sicherzugehen, dass es funktioniert (und dass $ {map.key} 'nicht funktionierte). –

1

Sie können den Schlüsselwert in einer Karte setzen auf Java Seite und auf das gleiche mit JSTL auf JSP Seite wie folgt:

Vor Java 1.7:

Map<String, String> map = new HashMap<String, String>(); 
map.put("key","value"); 

Java 1.7 und oben:

Map<String, String> map = new HashMap<>(); 
map.put("key","value"); 

JSP Snippet:

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

ich vor diesem Problem konfrontiert. Dies geschieht normalerweise, wenn der Schlüssel kein String ist. Die Lösung ist der Schlüssel zu einem String zu werfen, bevor der Schlüssel mit einem Wert aus der Karte

etwas zu bekommen:

<c:set var="keyString">${someKeyThatIsNotString}</c:set>

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

Hoffnung, die