`

JSTL对Map集合的操作

阅读更多

JSTL对Map集合的操作

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 楼 href 2012-04-21  
楼主 试试以下代码

<%@ 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="key1" value="bbb" ></c:set>
    <c:set var="keys" value="${key1}" ></c:set>    
    <c:set var="book" value="${pageScope.table[pageScope.keys]}"></c:set>    
${keys }=${book}    
<!-- 这里的${book就是对应于key值得book对象} -->    
    <br>    
  </body>    
</html:html>  

相关推荐

    jstl对集合操作大全-个人整理

    1. **迭代Map集合** 当使用`&lt;c:forEach&gt;`标签时,如果`items`属性的值是一个`Map`对象,那么`var`属性定义的变量将会是一个`Map.Entry`对象。`Map.Entry`表示`Map`中的一个键值对。通过`entry.key`可以获取键(key...

    Struts的增删改查分页 带oracle数据库的项目 包含JSTL读取MAP集合 批量删除

    Struts的增删改查分页 入门级的经典项目,带数据库的sql数据文件 包含JSTL读取MAP集合 批量删除 还有实现全选,反选, 只是前台的jsp页面未作页面校验,望各位输入到数据库的数据的合法性 保证下载 导入文件和...

    jstl读取map.txt

    这里主要关注的是如何利用JSTL中的`&lt;c:forEach&gt;`标签来遍历一个`java.util.Map`对象,并获取其中的键值对。 ### JSTL简介 JSTL是一组标准标签库,用于简化JavaServer Pages (JSP) 页面的开发工作。它提供了一系列...

    在jsp中使用JSTL跟El表达式访问和遍历Map集合

    本篇将详细介绍如何在JSP中利用JSTL与EL表达式来访问和遍历Map集合。 首先,JSTL是一个标准的标签库,它提供了一系列预定义的标签,用于处理常见的任务,如迭代、条件判断、XML处理等,避免了在JSP页面中直接写Java...

    jstl之map,list访问遍历以及el表达式map取值的实现

    在JSTL中,处理集合数据如Map和List是非常常见的需求。本篇文档详细介绍了如何在JSTL中遍历Map和List,并通过EL表达式访问和取值。 首先,让我们了解一下JSTL的基本概念。JSTL定义了几种标签库,如核心标签库、格式...

    遍历Map集合.pdf

    本文主要讲解了在Java中如何遍历Map集合,这是在日常编程中经常遇到的一个操作,特别是在需要处理键值对数据时。以下将详细介绍Map集合的遍历方法以及一些相关的知识点。 首先,Map是Java集合框架中的一个接口,它...

    jstl EL表达式遍历Map的方法

    下面我们将详细介绍如何使用JSTL EL表达式遍历Map集合。 ### JSTL EL表达式概述 JSTL(JavaServer Pages Standard Tag Library)是一个JSP标签库,它简化了JSP页面的开发,使得JSP能够更专注于显示逻辑,而不是...

    使用Java集合模拟JSTL包中的Result接口功能

    如果不想导包,那么,我们需要自己写,于是,本人使用Java的集合框架来完成模拟jstl的Result接口的功能--返回一个Map对象,然后通过表的字段名作为键来从Map对象中取所对应的记录集合list. 学习对象:所有学习Java...

    jstl,jstl实例源码

    - **字符串操作**:`fn:length()`、`fn:substring()` 等函数提供了对字符串的各种操作。 #### 5. SQL标签库 - **数据库查询**:`&lt;sql:update&gt;`、`&lt;sql:query&gt;` 和 `&lt;sql:exec&gt;` 用于执行SQL语句。 ### JSTL实例...

    详解javaweb中jstl如何循环List中的Map数据

    其中,标签是JSTL中用于迭代集合对象的一个重要标签。本文将详细介绍如何在Javaweb中使用JSTL的标签循环List中的Map数据,并通过具体的代码示例解释其工作原理。 首先,我们考虑一个常见的场景:在后台代码中生成一...

    jstl 遍历_jstl遍历_

    在JSP中,我们经常需要遍历集合数据,如数组、列表或Map,以便在页面上展示。`jstl遍历`就是这样一个关键功能。 **1. JSTL核心库(Core Library)** JSTL的核心库主要包含用于控制流程、迭代、URL处理等的标签。...

    jstl插件与底层源码

    - `&lt;c:forEach&gt;`:遍历集合,可以用于数组、列表、Map等。 - `&lt;c:set&gt;`:设置变量,相当于Java中的`var = value`。 - `&lt;c:out&gt;`:安全地输出变量,防止XSS攻击。 **6. 源码分析** JSTL的源码位于Apache Tomcat的`...

    jstl_standard.rar

    - `forEach`:用于遍历集合,如数组、列表、Map等。 - `if` 和 `choose/when/otherwise`:实现条件判断。 - `import`:用于引入外部资源。 - `out`:显示指定的变量或表达式的值。 - `redirect` 和 `forward`:...

    jstl相关jar包

    - **迭代**:`&lt;c:forEach&gt;`可以方便地遍历集合,如数组、列表、Map等。 - **国际化**:`&lt;fmt:formatNumber&gt;`、`&lt;fmt:message&gt;`等标签用于数字格式化和多语言支持。 - **URL处理**:`&lt;c:url&gt;`和`&lt;c:param&gt;`可以构建...

    jstl 遍历_jstl遍历_源码.zip

    在本压缩包中,"jstl 遍历_jstl遍历_源码.zip"可能包含了一些关于如何使用JSTL进行遍历操作的示例代码和源码。以下是对JSTL遍历功能的详细解释。 1. JSTL核心库(Core Library): JSTL的核心库提供了用于处理常见...

    JSTL文档

    4. **迭代标签**:`&lt;c:forEach&gt;`用于遍历集合,如数组、列表或Map。 三、JSTL与EL的结合使用 1. **EL表达式**:JSTL常与EL(Expression Language)配合使用,EL简化了获取和设置JavaBean属性的过程,使得页面更加...

    JSTL API帮助文档

    - **迭代标签**: 如`&lt;c:forEach&gt;`,可用于遍历数组、集合、Map等,例如: ```jsp ${list}" var="item"&gt; ${item.name} ``` - **条件标签**: 如`&lt;c:if&gt;`和`&lt;c:choose&gt;`,用于条件判断,例如: ```jsp ${...

    JSTLjar包.zip

    1. **c:forEach**:用于循环遍历集合、数组或Map。 2. **c:if**和**c:choose**:用于条件判断,类似于Java中的if...else语句。 3. **c:set**:设置变量。 4. **c:out**:安全地输出值,防止XSS攻击。 5. **c:url**和...

    CSDN下载-JSTL-1.2

    - `&lt;c:forEach&gt;`:遍历集合,如数组、列表或Map。 - `&lt;c:remove&gt;`:从指定的作用域中移除一个变量。 - `&lt;c:redirect&gt;`和`&lt;c:forward&gt;`:用于页面间的跳转和转发。 2. **JSTL函数库** (fn tags): - 提供了一...

    JSTL详解

    在JSP页面中,你可以使用这些标签来实现逻辑控制和数据操作,比如在示例的`first_jstl.jsp`中,设置了变量`userName`和`age`,并用`&lt;c:out&gt;`输出变量值,用`&lt;c:forEach&gt;`进行迭代,以及用`&lt;c:if&gt;`进行条件判断。...

Global site tag (gtag.js) - Google Analytics