jstl中对java map的应用

news/2024/5/18 14:57:48 标签: jstl
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代码 
  1. <c:forEach items="${map}" var="entry">  
  2.        <c:out value="${entry.key}" />  
  3.         <c:out value="${entry.value}" />  
  4. </c:forEach>  

2、根据key求值

      如果事先知道key那么很容易根据${map.key值}就可以得到值对象,但是如果key是一个变量呢?有一个问题,如果给定一个key的变量如何使用 EL得到对象呢,这里需要使用EL表达式中的[]来解决。

       例:

Html代码 
  1. <c:out value="${map[key]}" />  
  2. <!-- 这里的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代码 
  1. <%@ page language="java" pageEncoding="utf-8"%>  
  2. <jsp:directive.page import="com.xaccp.vo.BookAdapter"/>  
  3. <%@ taglib prefix="c" uri="/WEB-INF/c.tld"  %>  
  4. <jsp:directive.page import="java.util.Hashtable"/>  
  5. <jsp:directive.page import="com.xaccp.vo.Book"/>  
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  7. <html:html locale="true">  
  8.   <head>  
  9.    <%  
  10.      Hashtable table=new Hashtable();  
  11.      BookAdapter ba=new BookAdapter();  
  12.      table.put("aaa",new Book(1,"abc"));  
  13.      table.put("bbb",new Book(2,"bbb"));  
  14.      table.put("ccc",new Book(3,"cccc"));  
  15.      pageContext.setAttribute("table",table);  
  16.     %>  
  17.   </head>  
  18.    
  19.   <body>  
  20.   
  21.     <hr>  
  22.     <c:forEach items="${table}" var="aaa">  
  23.      <c:set var="key" value="${aaa.key}" ></c:set>  
  24.      <c:set var="book" value="${aaa.value}"></c:set>  
  25.       ${key }=${book }111  name:${book.bookID}<br>  
  26.   
  27.     </c:forEach>  
  28.   </body>  
  29. </html:html>  
  30.   
  31.    
 2、根据key变量求值
如果事先知道key那么很容易根据${map.key值}就可以得到值对象,但是如果key是一个变量呢?
有一 个问题,如果给定一个key的变量如何使用EL得到对象呢,这里需要使用EL表达式中的[]来解决,解决方法如示例: 
Html代码 
  1. <%@ page language="java" pageEncoding="utf-8"%>     
  2. <jsp:directive.page import="com.xaccp.vo.BookAdapter"/>     
  3. <%@ taglib prefix="c" uri="/WEB-INF/c.tld"  %>     
  4. <jsp:directive.page import="java.util.Hashtable"/>     
  5. <jsp:directive.page import="com.xaccp.vo.Book"/>     
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">     
  7. <html:html locale="true">     
  8.   <head>     
  9.    <%     
  10.      Hashtable table=new Hashtable();     
  11.      table.put("aaa",new Book(1,"abc"));     
  12.      table.put("bbb",new Book(2,"bbb"));     
  13.      table.put("ccc",new Book(3,"cccc"));     
  14.      pageContext.setAttribute("table",table);     
  15.     %>     
  16.   </head>     
  17.       
  18.   <body>     
  19.     This a struts page. <br>     
  20.     <c:set var="keys" value="bbb" ></c:set>     
  21.     <c:set var="book" value="${pageScope.table[pageScope.keys]}"></c:set>     
  22.  ${keys }=${book}     
  23. <!-- 这里的${book就是对应于key值得book对象} -->     
  24.     <br>     
  25.   </body>     
  26. </html:html>    

http://www.niftyadmin.cn/n/884793.html

相关文章

正则表达式经验入门

本文目标 30分钟内让你明白正则表达式是什么&#xff0c;并对它有一些基本的了解&#xff0c;让你可以在自己的程序或网页里使用它。 如何使用本教程 最重要的是——请给我30分钟&#xff0c;如果你没有使用正则表达式的经验&#xff0c;请不要试图在30秒内入门——除非你是超人…

springmvc logback日志

logback是log4j作者推出的新日志系统&#xff0c;原生支持slf4j通用日志api&#xff0c;允许平滑切换日志系统&#xff0c;并且对简化应用部署中日志处理的工作做了有益的封装。 官方地址为&#xff1a;http://logback.qos.ch/ Logback日志需要依赖一下jar包&#xff1a; slf…

jstl小数点展示,java bigdecimal小数点展示

本文初衷&#xff1a;主要是由于平时在写页面和后台程序的时候经常遇到小数点后保留几位&#xff0c;以及是否需要四舍五入的情况&#xff0c;总结一下。 1.页面程序&#xff0c;一般就是jstl标签格式化&#xff0c;如下所示&#xff1a; <% taglib uri"http://java.su…

jsp web页面处理

1.对于时间的处理&#xff0c;后台传递的jstl标签中的时间加减操作&#xff0c;如下&#xff1a; var oneDay 24*3600*1000;var before new Date(${result.finishDate}).getTime();//转化为时间戳-毫秒单位var now new Date().getTime();//转化为时间戳-毫秒单位if(oneDaybe…

Class.forName()用法详解

主要功能 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类&#xff0c; 也就是说JVM会执行该类的静态代码段 下面&#xff0c;通过解答以下三个问题的来详细讲解下Class.forName()的用法。 一.什么时候用Class.forName()&…

jquery ajax防重复提交

巧用Ajax的beforeSend 提高用户体验 jQuery是经常使用的一个开源js框架&#xff0c;其中的$.ajax请求中有一个beforeSend方法&#xff0c;用于在向服务器发送请求前执行一些动作。 具体可参考jQuery官方文档&#xff1a;http://api.jquery.com/Ajax_Events/ $.ajax({beforeSend…

Spring Filter过滤器,Spring拦截未登录用户权限限制

实现的功能&#xff1a;判断用户是否已登录&#xff0c;未登录用户禁止访问任何页面或action&#xff0c;自动跳转到登录页面。比较好的做法是不管什么人都不能直接访问jsp页面&#xff0c;要访问就通过action&#xff0c;这样就变成了一个实实在在的权限控制了。 那么就有3种方…

js打开新窗体的方式总结

注://关闭,父窗口弹出对话框,子窗口直接关闭this.Response.Write("<script languagejavascript>window.close();</script>");//关闭,父窗口和子窗口都不弹出对话框,直接关闭this.Response.Write("<script>");this.Response.Write("…