2012-09-20 10 views
13

Tengo Map en EL como ${map} y estoy tratando de obtener el valor usando una clave que es en sí misma también una variable EL ${key} con el valor "1000".Acceda al valor del mapa en EL usando una variable como clave

El uso de ${map["1000"]} funciona, pero ${map["$key"]} no funciona. ¿Qué estoy haciendo mal y cómo puedo obtener el valor Map usando una variable como clave?

+1

$ no es el comienzo de un nombre de variable, indica el inicio de una expresión. –

Respuesta

-4

creo que se debe acceder a su mapa algo como:

${map.key} 

y comprobar algunos tutoriales sobre jstl como 1 y 2 (un poco anticuado, pero aún funcional)

+0

Intenté $ {map. $ Key}, pero no funcionó – user1643001

+0

No $ {map. $ Key}, solo $ {map.key} – Nickmancol

19

$ no es el inicio de un nombre de variable, indica el inicio de una expresión. Debe usar ${map[key]} para acceder a la propiedad key en el mapa map.

Puedes probarlo en una página con un parámetro GET, utilizando la siguiente cadena de consulta, por ejemplo ?whatEver=something

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

Esta es la salida:

whatEver: something 

Ver: https://stackoverflow.com/tags/el/info y vaya a la sección "Notación de llaves".

+0

La solución no funciona: -/ –

+0

Algo más está mal entonces. Probé el ejemplo en mi publicación para asegurarme de que funcionaba (y que '$ {map.key}' no funcionaba). –

1

Usted puede poner la clave-valor en un mapa en Java lateral y poder acceder al mismo mediante JSTL en JSP página de la siguiente manera:

java Antes 1.7:

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

Java 1.7 y arriba:

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

JSP Fragmento:

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

me he enfrentado a este problema antes. Esto normalmente ocurre cuando la clave no es una cadena. La solución es echar la llave a una cadena antes de utilizar la clave para obtener un valor del mapa

Algo como esto:

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

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

Espero que ayude

Cuestiones relacionadas