如何通过EL表达式获取地图的动态键?

在EL中,方括号运算符用于检索数组和集合的元素。对于实现java.util.Map接口的集合,方括号运算符使用关联的键来查找存储在映射中的值。

在方括号中指定键,并返回相应的值作为表达式的值。例如,表达式${Map['key']}返回与映射标识符所引用的映射中的“key”键相关联的值。

当forEach的items属性中的表达式的值为java.util.Map时,var中命名的变量的类型为java.util.Map.Entry,当var=entry时,使用表达式${entry.key}获取键名。使用表达式${ entry . value }获取每个条目的值。这是因为java.util.Map.Entry对象有getKey和getValue方法,表达式语言遵循JavaBean的命名约定。

& lt%

地图& ltString,String & gtmap 2 = new HashMap();

map2.put("a "," hello world ");

map2.put("b ","这是地图");

request.setAttribute("map2 ",map 2);

% & gt

& ltbr & gt

键值对遍历

& ltc:forEach var = " item " items = " $ { map 2 } " & gt;

$ { item.key } & gt$ { item.value } & ltbr & gt

& lt/c:forEach & gt;

键遍历

& ltc:forEach var = " item " items = " $ { map 2 } " & gt;

$ { item.key } & ltbr & gt

& lt/c:forEach & gt;

值遍历

& ltc:forEach var = " item " items = " $ { map 2 } " & gt;

$ { item.value } & ltbr & gt

& lt/c:forEach & gt;

& ltbody & gt

& ltbr & gt& ltbr & gt

& lt%

列表& lt字符串& gtlist = new ArrayList & lt字符串& gt();

list . add(" first ");

list . add(" second ");

列表& lt字符串& gtlist2 = new ArrayList & lt字符串& gt();

list 2 . add(" aaaaaa ");

list 2 . add(" bbbbbb ");

地图& lt字符串,列表& lt字符串& gt& gtmap = new HashMap();

map.put("a ",list);

map.put("b ",list 2);

request.setAttribute("map ",地图);

% & gt

通过键获取列表值并遍历列表

& ltc:forEach var = " item " items = " $ { map[' a ']} " & gt;

$ { item } & ltbr & gt

& lt/c:forEach & gt;& ltbr & gt

& ltc:forEach var = " item " items = " $ { map[' b ']} " & gt;

$ { item } & ltbr & gt

& lt/c:forEach & gt;& ltbr & gt

map中的值是一个列表,直接遍历列表中的每一项

& ltc:forEach var = " item " items = " $ { map } " & gt;

& ltc:forEach items = " $ { item . value } " var = " it " & gt;

$ { it } & ltbr & gt

& lt/c:forEach & gt;

& lt/c:forEach & gt;