`

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的命名约定。

     例:

Html代码
<c:forEach items="${map}" var="entry">  
       <c:out value="${entry.key}" />  
        <c:out value="${entry.value}" />  
</c:forEach>

<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表达式中的[]来解决。

       例:

Html代码
<c:out value="${map[key]}" />  
<!-- 这里的map就是 java.util.Map对像,key是这个map里的一个key -->

<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属性的相继调用的简化。示例: Html代码
<%@ page language="java" pageEncoding="utf-8"%>  
<jsp:directive.page import="com.xa**.vo.BookAdapter"/>  
<%@ taglib prefix="c" uri="/WEB-INF/c.tld"   %>  
<jsp:directive.page import="java.util.Hashtable"/>  
<jsp:directive.page import="com.xa**.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>  
  
 


<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表达式中的[]来解决,解决方法如示例:
Html代码
<%@ page language="java" pageEncoding="utf-8"%>      
<jsp:directive.page import="com.xa**.vo.BookAdapter"/>      
<%@ taglib prefix="c" uri="/WEB-INF/c.tld"   %>      
<jsp:directive.page import="java.util.Hashtable"/>      
<jsp:directive.page import="com.xa**.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>   
标签: JSTL <c:set>标签有两种不同的属性设置:var和target。

var“版本”用于设置作用域属性,target“版本”用于设置bean属性或Map值。

这两个版本都有两种形式:有标签体和没有标签体。有标签体的只是放入值的另一种途径。

★ var“版本”

   1. <c:set var="userLevel" scope="session" value="Cowboy"/>
   2.  
   3. <c:set var="fido" value="${person.dog}"/>
   4.  
   5. <c:set var="user" scope="session">
   6.    Sheriff, Bartender, Cowgirl  
   7. </c:set>

如果“value”为null,“var”指定的属性将被删除!

如果“var”指定的属性不存在,则会创建一个属性,但仅当“value”不为null时才会创建新属性。

★ target“版本”

   1. <c:set target="${petMap}" property="dogName" value="Clover" scope="session"/>
   2.  
   3. <c:set target="${person}" property="name">
   4.    ${foo.name}  
   5. </c:set>

如果“target”是一个Map,“property”指定的是该Map的一个键;如果“target”是一个bean,“property”指定的是该bean的一个成员字段。

如果“target”表达式为null,容器会抛出一个异常。

如果“target”表达式不是一个Map或bean,容器会抛出一个异常。

如果“target”表达式是一个bean,但是这个bean没有与“property”匹配的成员字段,容器会抛出一个异常。



分享到:
评论

相关推荐

    jstl读取map.txt

    根据提供的文件信息,本文将详细解释如何使用JSTL(JavaServer Pages Standard Tag Library)来读取并处理一个名为`map.txt`的文件中的数据。这里主要关注的是如何利用JSTL中的`&lt;c:forEach&gt;`标签来遍历一个`java....

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

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

    jstl EL表达式遍历Map的方法

    在JSP页面中,JSTL EL(Expression Language)提供了一种简便的方式来访问和...通过示例,我们学习了如何在JSP页面中遍历Map以及如何处理Map中可能嵌套的集合。掌握这些技术对于编写高效且易于维护的JSP页面至关重要。

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

    在JavaServer Pages (JSP)开发中,JSTL(Java...总之,JSTL和EL是JSP开发中的重要工具,它们极大地提升了代码的清晰度和效率,尤其是在处理集合数据,如Map时。理解并熟练掌握这两者,对于提升JSP应用的质量至关重要。

    jstl,jstl实例源码

    JSTL,全称为JavaServer Pages Standard Tag Library,是Java EE平台中一个用于简化JSP开发的标签库,它提供了一系列预定义的标签,使得开发者可以通过XML语法在JSP页面中处理常见任务,如控制流程、数据操作、I/O...

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

    这两种方式展示了如何灵活运用JSTL的标签来处理List中的Map数据。通过它们,开发者可以更加方便地在JSP页面中展示复杂的数据结构。同时,这种方式也使得代码更加清晰易读,便于维护。 需要注意的是,上述代码中的"C...

    jstl插件与底层源码

    JSTL是Java Web开发中的一种标准标签库,它提供了一系列的标签用于处理常见的Java Servlet和JSP任务,如迭代、条件判断、XML处理等,极大地简化了JSP页面的编写。在本文中,我们将深入探讨JSTL的核心概念、使用方法...

    jstl 遍历_jstl遍历_

    JSTL的核心库主要包含用于控制流程、迭代、URL处理等的标签。例如,`&lt;c:forEach&gt;`标签是用于遍历集合的,它是JSTL中最常用的标签之一。 **2. `&lt;c:forEach&gt;`标签** `&lt;c:forEach&gt;`标签用于遍历任何可迭代的数据源,...

    JSTLjar包.zip

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

    jstl相关jar包

    `standard.jar`提供了JSTL标准标签库的一部分实现,特别是与Java Servlet API紧密关联的部分,如JDBC操作、XML处理等。 使用这两个jar包,开发者可以实现以下功能: - **控制结构**:通过`&lt;c:if&gt;`、`&lt;c:choose&gt;`等...

    jstl_standard.rar

    JSTL的核心在于将业务逻辑和展示逻辑分离,使开发者可以更专注于页面的表现和数据的处理,而无需编写过多的Java脚本或表达式语言。 **JSTL主要组件** 1. **Core标签库 (c)**:这是最常用的一部分,提供了如迭代、...

    JSTL文档

    四、JSTL的XML处理 1. **XML标签库**:`&lt;x:parse&gt;`解析XML文档,`&lt;x:transform&gt;`进行XSLT转换。 2. **XPath支持**:JSTL的`xml`库提供了对XPath的支持,允许开发者通过XPath表达式访问XML节点。 五、JSTL的SQL...

    JSTL API帮助文档

    JSTL 是一个标准的标签库,用于简化JavaServer Pages (JSP) 开发,它提供了一系列的标签来处理常见的任务,如迭代、条件判断、XML处理、国际化和数据库操作等。这个API帮助文档将详细阐述JSTL的核心组件以及如何在...

    jstl标签使用文档,jstl标签使用帮助文档

    **JSTL(JavaServer Pages Standard Tag Library)** 是一个标准的标签库,它为Java Servlet和JavaServer Pages (JSP) 提供了强大的处理能力,使得开发者可以通过使用标签而不是脚本来实现页面逻辑,从而提高了代码...

    jstl 使用文档方便你快速入门 ,能够快速上手使用JSTL技术.pdf

    **JSTL(JSP Standard Tag Library)**是Java服务器页面(JSP)的一个扩展,旨在简化JSP页面的开发,通过提供一组预定义的标签,使得开发者可以在不使用脚本语言的情况下处理业务逻辑。JSTL的出现是为了替代JSP页面...

    jstl 遍历_jstl遍历_源码.zip

    JSTL的核心库提供了用于处理常见JSP任务的标签,如迭代、条件判断、URL处理等。在遍历方面,`&lt;c:forEach&gt;`标签是最常用的一个。 2. `&lt;c:forEach&gt;`标签: 这个标签用于遍历任何集合,包括数组、列表、Map等。基本...

    JSTL标签库jar包文件

    JSTL提供了一系列预定义的标签,用于处理常见的任务,如迭代、条件判断、XML处理等。在Web应用中,遇到无法解析绝对URI的问题,例如`http://java.sun.com/jsp/jstl/core`,这通常意味着缺少了JSTL相关的jar包。 **...

    CSDN下载-JSTL-1.2

    JSTL 1.2是该库的一个版本,提供了丰富的标签来处理常见的Web开发任务,如迭代、条件判断、XML处理、国际化和数据库操作等。 1. **JSTL核心标签库** (core tags): - `&lt;c:set&gt;`:用于在页面作用域、请求作用域、...

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

    **JSTL(JavaServer Pages Standard Tag Library)**是Java Web开发中的一种标准标签库,它简化了在JSP页面中的编程,使开发者能够使用预定义的标签来处理常见的任务,如迭代、条件判断、XML处理等。在本文中,我们...

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

    在这个个人整理的知识点中,主要关注的是JSTL如何处理`Map`集合。 1. **迭代Map集合** 当使用`&lt;c:forEach&gt;`标签时,如果`items`属性的值是一个`Map`对象,那么`var`属性定义的变量将会是一个`Map.Entry`对象。`Map...

Global site tag (gtag.js) - Google Analytics