`

JSTL &EL对Map集合的支持

阅读更多
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="ISO-8859-1"%>
<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="ISO-8859-1"%>
<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>
 
分享到:
评论

相关推荐

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

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

    jstl和el的基础

    【JSTL与EL基础详解】 JSTL(JavaServer Pages Standard Tag Library)和EL(Expression Language)是Java Web开发中的两个重要组件,主要用于增强JSP页面的功能和可读性。JSTL是一组标签库,提供了处理常见任务如...

    jstl EL表达式遍历Map的方法

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

    JSTL--EL使用手册.pdf

    EL表达式的默认变量包括pageScope、requestScope、sessionScope和applicationScope,它们代表了不同作用域中的参数集合,类似于存储在java.util.Map中的参数。 使用EL表达式,可以非常方便地在JSP页面中获取和显示...

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

    JSTL(JavaServer Pages Standard Tag Library)是一种用于JSP页面的标准标签库,它提供了许多实用的标签,简化了JSP开发,其中包括对集合操作的支持。在这个个人整理的知识点中,主要关注的是JSTL如何处理`Map`集合...

    jstl读取map.txt

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

    JSTL、EL、ONGL、Struts标签的区别

    **定义**: EL 全称为 Expression Language,最初是为 JSTL 1.0 设计的一种语言,目的是简化对数据的存取操作。自 JSP 2.0 和 Servlet 2.4 开始,EL 已经成为标准的一部分。 **表达方式**: EL 表达式的书写方式如下...

    JSP的JSTL标签和EL表达式大全

    **JSP的JSTL标签和EL表达式详解** JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML或XML文档中嵌入Java代码来生成动态内容。然而,传统的JSP脚本语法可能导致代码混乱且不易维护。为了解决这个问题...

    jstl两个核心包和jstl标签库EL表达式详解

    - ****:用于遍历集合,如数组、列表、Map等。 - ****:用于设置变量。 - ****:用于安全地输出数据,防止XSS攻击。 - ****:用于格式化日期和时间。 - **&lt;c:url&gt; 和 **:用于创建和添加URL参数。 **4. 使用JSTL和...

    EL表达式和Jstl详细教程

    这些库提供了JSTL的实现和对EL的支持。 综上所述,EL表达式和JSTL都是JSP开发中的重要工具,它们极大地提高了代码的可读性和维护性,降低了页面的复杂度。通过熟练掌握EL和JSTL,开发者可以更高效地构建动态的、...

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

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

    使用EL表达式取集合中的数据

    对于Map集合,你可以通过键来访问其对应的值。例如,Servlet创建了一个存储Person对象的Map: ```java Map, Person&gt; map = new HashMap(); map.put("aa", new Person("aaaaaaa")); map.put("bb", new Person(...

    09_尚硅谷_EL表达式&JSTL标签库_王振国 - 课堂笔记.pdf

    - EL表达式能够输出JavaBean对象的普通属性、数组属性、List集合属性以及Map集合属性。 - 对于数组属性,EL表达式可以通过索引访问数组中的元素,比如${p.phones[2]}。 - 对于List集合属性,EL表达式同样可以通过...

    EL表达式和jsp JSTL标签库的总结

    本文详细介绍了EL表达式的基本用法,包括EL隐含对象的访问方式、自定义JavaBean的使用以及对Map集合的访问。此外,还简要介绍了JSTL标签库的核心标签,如输出、条件判断和循环等功能。通过这些工具,开发者可以更...

    EL和JSTL使用详解

    3. **访问Map集合中的值**: - 示例:如果一个名为`map`的Map对象被存储在`request`范围内,可以通过`${map.key1}`来获取键为`key1`的值。 4. **支持的算术和关系运算符**: - 示例:EL表达式支持诸如`+`、`-`、`...

    jstl插件与底层源码

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

    JSTL文档

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

    jstl 遍历_jstl遍历_

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

    JSTL API帮助文档

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

Global site tag (gtag.js) - Google Analytics