在JSTL EL中处理java.util.Map,及嵌套List的情况

网络编程 2025-03-28 18:12www.168986.cn编程入门

在 EL 语言中,方括号运算符是检索数组和集合元素的得力助手。对于实现了 java.util.Map 接口的集合来说,更是如此。使用方括号运算符,你可以通过关联的键来查找映射中的值。

例如,表达式 ${map['key']} 能够轻松返回与 map 标识符关联的 Map 中 "key" 键的值。当在 forEach 的 items 属性中的表达式的值是 java.util.Map 时,那么命名的变量的类型就是 java.util.Map.Entry。如果变量命名为 entry,那么表达式 ${entry.key} 和 ${entry.value} 分别可以获取每个 entry 的键名和值。这是因为在 EL 语言中,java.util.Map.Entry 对象遵循 JavaBean 的命名约定,拥有 getKey 和 getValue 方法。

让我们看一个具体的例子:

我们创建一个名为 map2 的 Map 对象,并向其中添加两个键值对:

```java

<% Map map2 = new HashMap();

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

map2.put("b","this is map");

request.setAttribute("map2",map2); %>

```

然后,我们可以通过 EL 和 JSTL 标签遍历这个 Map 的键值对:

```jsp

${item.key} > ${item.value}

```

同样地,我们可以分别遍历键和值:

```jsp

${item.key}

${item.value}

```

如果 Map 中的值是列表,我们可以通过键获取列表值并遍历列表中的每一项。例如:

```java

<% List list = new ArrayList();

list.add("first");

list.add("second");

List list2 = new ArrayList();

list2.add("aaaaaa");

list2.add("bbbbbb");

Map> map = new HashMap();

map.put("a",list);

map.put("b",list2);

request.setAttribute("map",map); %>

```

然后,我们可以这样遍历通过键 'a' 和 'b' 获取的列表值:

```jsp

${item}

${item}

```

如果 Map 中的值是另一个 Map,且该 Map 的值是列表,我们可以先遍历外层 Map,再遍历内层列表中的每一项:

```jsp

c:forEach var="item" items="${mapItem.value}"> ${it}
```这样我们就能全面理解和遍历复杂的 EL 和 JSTL 结构了。通过调用 `cambrian.render('body')` 将所有这些内容渲染到页面上。

上一篇:利用transition实现文字上下抖动的效果 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by