ejemplos - jsp include
Acceda al valor del mapa en EL usando una variable como clave (4)
Tengo un 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"
.
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?
Puede poner la clave-valor en un mapa en el lado de Java
y acceder a la misma usando JSTL
en la página JSP
como se muestra a continuación:
Prior java 1.7:
Map<String, String> map = new HashMap<String, String>();
map.put("key","value");
Java 1.7 y superior:
Map<String, String> map = new HashMap<>();
map.put("key","value");
Fragmento de JSP:
<c:out value="${map[''key'']}"/>
Me he enfrentado a este problema antes. Esto normalmente ocurre cuando la clave no es una cadena. La solución es arrojar la clave a una Cadena antes de usar 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
$
no es el comienzo de un nombre de variable, sino que indica el inicio de una expresión. Debería usar ${map[key]}
para acceder a la key
propiedad en el mapa del map
.
Puede probarlo en una página con un parámetro GET
, usando la siguiente cadena de consulta, por ejemplo ?whatEver=something
<c:set var="myParam" value="whatEver"/>
whatEver: <c:out value="${param[myParam]}"/>
Esto dará como resultado:
whatEver: something
Consulte: https://.com/tags/el/info y vaya a la sección "Notación de llaves".