1、迭代
当forEach
的items属性中的表达式的值是java.util.Map时,则var中命名的变量的类型就是java.util.Map.Entry。这时
var=entry的话,用表达式${entry.key}取得键名。用表达式${entry.value}得到每个entry的值。这是因为
java.util.Map.Entry对象有getKey和getValue方法,表达式语言遵守JavaBean的命名约定。
例:
- <c:forEach items="${map}" var="entry">
- <c:out value="${entry.key}" />
- <c:out value="${entry.value}" />
- </c:forEach>
2、根据key求值
如果事先知道key那么很容易根据${map.key值}就可以得到值对象,但是如果key是一个变量呢?有一个问题,如果给定一个key的变量如何使用
EL得到对象呢,这里需要使用EL表达式中的[]来解决。
例:
- <c:out value="${map[key]}" />
-
<!-- 这里的map就是 java.util.Map对像,key是这个map里的一个
key -->
1、迭代
Map的每个对象以key=value的形式给出
当forEach
tag的item属性中的表达式的值是java.util.Map时,在var中命名的变量被设置为类型是java.util.Map.Entry的
item。这时,迭代变量被称为entry,因此,用表达式${entry.key}取得键名。
在下面的例子中你会看到,可以用表达
式${entry.value}得到每个entry的值。这是因为java.util.Map.Entry对象有getKey和getValue方法,表
达式语言遵守JavaBean的命名约定。
通常,JSP
EL表达式${a.b.c.d}是用代码a.getB().getC().getD()来计算的。这种表达式是对JavaBean属性的相继调用的简化。
示例:
- <%@ page language="java" pageEncoding="utf-8"%>
- <jsp:directive.page import="com.xaccp.vo.BookAdapter"/>
- <%@ taglib prefix="c" uri="/WEB-INF/c.tld" %>
- <jsp:directive.page import="java.util.Hashtable"/>
- <jsp:directive.page import="com.xaccp.vo.Book"/>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html:html locale="true">
- <head>
- <%
- Hashtable table=new Hashtable();
- BookAdapter ba=new BookAdapter();
- table.put("aaa",new Book(1,"abc"));
- table.put("bbb",new Book(2,"bbb"));
- table.put("ccc",new Book(3,"cccc"));
- pageContext.setAttribute("table",table);
- %>
- </head>
-
- <body>
-
- <hr>
- <c:forEach items="${table}" var="aaa">
- <c:set var="key" value="${aaa.key}" ></c:set>
- <c:set var="book" value="${aaa.value}"></c:set>
- ${key }=${book }111 name:${book.bookID}<br>
-
- </c:forEach>
- </body>
- </html:html>
-
-
2、根据key变量求值
如果事先知道key那么很容易根据${map.key值}就可以得到值对象,但是如果key是一个变量呢?
有一
个问题,如果给定一个key的变量如何使用EL得到对象呢,这里需要使用EL表达式中的[]来解决,解决方法如示例:
- <%@ page language="java" pageEncoding="utf-8"%>
- <jsp:directive.page import="com.xaccp.vo.BookAdapter"/>
- <%@ taglib prefix="c" uri="/WEB-INF/c.tld" %>
- <jsp:directive.page import="java.util.Hashtable"/>
- <jsp:directive.page import="com.xaccp.vo.Book"/>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html:html locale="true">
- <head>
- <%
- Hashtable table=new Hashtable();
- table.put("aaa",new Book(1,"abc"));
- table.put("bbb",new Book(2,"bbb"));
- table.put("ccc",new Book(3,"cccc"));
- pageContext.setAttribute("table",table);
- %>
- </head>
-
- <body>
- This a struts page. <br>
- <c:set var="keys" value="bbb" ></c:set>
- <c:set var="book" value="${pageScope.table[pageScope.keys]}"></c:set>
- ${keys }=${book}
- <!-- 这里的${book就是对应于key值得book对象} -->
- <br>
- </body>
- </html:html>
分享到:
相关推荐
1. **迭代Map集合** 当使用`<c:forEach>`标签时,如果`items`属性的值是一个`Map`对象,那么`var`属性定义的变量将会是一个`Map.Entry`对象。`Map.Entry`表示`Map`中的一个键值对。通过`entry.key`可以获取键(key...
Struts的增删改查分页 入门级的经典项目,带数据库的sql数据文件 包含JSTL读取MAP集合 批量删除 还有实现全选,反选, 只是前台的jsp页面未作页面校验,望各位输入到数据库的数据的合法性 保证下载 导入文件和...
这里主要关注的是如何利用JSTL中的`<c:forEach>`标签来遍历一个`java.util.Map`对象,并获取其中的键值对。 ### JSTL简介 JSTL是一组标准标签库,用于简化JavaServer Pages (JSP) 页面的开发工作。它提供了一系列...
本篇将详细介绍如何在JSP中利用JSTL与EL表达式来访问和遍历Map集合。 首先,JSTL是一个标准的标签库,它提供了一系列预定义的标签,用于处理常见的任务,如迭代、条件判断、XML处理等,避免了在JSP页面中直接写Java...
下面我们将详细介绍如何使用JSTL EL表达式遍历Map集合。 ### JSTL EL表达式概述 JSTL(JavaServer Pages Standard Tag Library)是一个JSP标签库,它简化了JSP页面的开发,使得JSP能够更专注于显示逻辑,而不是...
在JSTL中,处理集合数据如Map和List是非常常见的需求。本篇文档详细介绍了如何在JSTL中遍历Map和List,并通过EL表达式访问和取值。 首先,让我们了解一下JSTL的基本概念。JSTL定义了几种标签库,如核心标签库、格式...
本文主要讲解了在Java中如何遍历Map集合,这是在日常编程中经常遇到的一个操作,特别是在需要处理键值对数据时。以下将详细介绍Map集合的遍历方法以及一些相关的知识点。 首先,Map是Java集合框架中的一个接口,它...
如果不想导包,那么,我们需要自己写,于是,本人使用Java的集合框架来完成模拟jstl的Result接口的功能--返回一个Map对象,然后通过表的字段名作为键来从Map对象中取所对应的记录集合list. 学习对象:所有学习Java...
- **字符串操作**:`fn:length()`、`fn:substring()` 等函数提供了对字符串的各种操作。 #### 5. SQL标签库 - **数据库查询**:`<sql:update>`、`<sql:query>` 和 `<sql:exec>` 用于执行SQL语句。 ### JSTL实例...
其中,标签是JSTL中用于迭代集合对象的一个重要标签。本文将详细介绍如何在Javaweb中使用JSTL的标签循环List中的Map数据,并通过具体的代码示例解释其工作原理。 首先,我们考虑一个常见的场景:在后台代码中生成一...
在JSP中,我们经常需要遍历集合数据,如数组、列表或Map,以便在页面上展示。`jstl遍历`就是这样一个关键功能。 **1. JSTL核心库(Core Library)** JSTL的核心库主要包含用于控制流程、迭代、URL处理等的标签。...
- `<c:forEach>`:遍历集合,可以用于数组、列表、Map等。 - `<c:set>`:设置变量,相当于Java中的`var = value`。 - `<c:out>`:安全地输出变量,防止XSS攻击。 **6. 源码分析** JSTL的源码位于Apache Tomcat的`...
- `forEach`:用于遍历集合,如数组、列表、Map等。 - `if` 和 `choose/when/otherwise`:实现条件判断。 - `import`:用于引入外部资源。 - `out`:显示指定的变量或表达式的值。 - `redirect` 和 `forward`:...
- **迭代**:`<c:forEach>`可以方便地遍历集合,如数组、列表、Map等。 - **国际化**:`<fmt:formatNumber>`、`<fmt:message>`等标签用于数字格式化和多语言支持。 - **URL处理**:`<c:url>`和`<c:param>`可以构建...
在本压缩包中,"jstl 遍历_jstl遍历_源码.zip"可能包含了一些关于如何使用JSTL进行遍历操作的示例代码和源码。以下是对JSTL遍历功能的详细解释。 1. JSTL核心库(Core Library): JSTL的核心库提供了用于处理常见...
4. **迭代标签**:`<c:forEach>`用于遍历集合,如数组、列表或Map。 三、JSTL与EL的结合使用 1. **EL表达式**:JSTL常与EL(Expression Language)配合使用,EL简化了获取和设置JavaBean属性的过程,使得页面更加...
- **迭代标签**: 如`<c:forEach>`,可用于遍历数组、集合、Map等,例如: ```jsp ${list}" var="item"> ${item.name} ``` - **条件标签**: 如`<c:if>`和`<c:choose>`,用于条件判断,例如: ```jsp ${...
1. **c:forEach**:用于循环遍历集合、数组或Map。 2. **c:if**和**c:choose**:用于条件判断,类似于Java中的if...else语句。 3. **c:set**:设置变量。 4. **c:out**:安全地输出值,防止XSS攻击。 5. **c:url**和...
- `<c:forEach>`:遍历集合,如数组、列表或Map。 - `<c:remove>`:从指定的作用域中移除一个变量。 - `<c:redirect>`和`<c:forward>`:用于页面间的跳转和转发。 2. **JSTL函数库** (fn tags): - 提供了一...
在JSP页面中,你可以使用这些标签来实现逻辑控制和数据操作,比如在示例的`first_jstl.jsp`中,设置了变量`userName`和`age`,并用`<c:out>`输出变量值,用`<c:forEach>`进行迭代,以及用`<c:if>`进行条件判断。...