`

自定义标签库循环数组 list map输出

 
阅读更多
jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.cgmcc.com/jsp/iteratorall" prefix="my6" %>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'itrstorcollection.jsp' starting page</title>
   
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">   
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

  </head>
  <body>

<%
List<String> list = new ArrayList<String>();
list.add("abc");
list.add("123");
list.add("wasd");

pageContext.setAttribute("listObj",list);
%>

遍历List<br/>
<my6:forEach items="${listObj}" var="mm">
${mm} <br/>
</my6:forEach>
<hr/>
<%

Map<String,String> map = new HashMap<String,String>();
map.put("11111","11111");
map.put("22222","222222");
map.put("33333","33333");

pageContext.setAttribute("mapObj",map);

%>
遍历Map<br/>

<my6:forEach items="${mapObj}" var="map">
${map.key} ---- ${map.value} <br/>
</my6:forEach>

<hr/>

遍历String[]<br/>

<%
String[] strs = {"aaaa","bbbbbb","cccccc"};
pageContext.setAttribute("strsObj",strs);
%>

<my6:forEach items="${strsObj}" var="sss">
${sss} --<br/>
</my6:forEach>
  
  </body>
</html>



tld
<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>my6</short-name>
<uri>http://www.cgmcc.com/jsp/iteratorall</uri>
      <tag>
      <name>forEach</name>
      <tag-class>com.cgm.itratorcol.IteratorCollection</tag-class>
      <body-content>scriptless</body-content>
     
      <attribute>
      <name>items</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      </attribute>
      <attribute>
      <name>var</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      </attribute>
      </tag>
</taglib>















java
package com.cgm.itratorcol;

import java.io.IOException;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;

public class IteratorCollection extends SimpleTagSupport{


/*
<my:myList items="${listObj}" var="yyyyy">
${yyyyy}  ## <br/>
</my:myList>
*/

private Iterator<Object> items;
private String var;
public void setItems(Object items) {
//list
if(items instanceof List){
this.items = ((List)items).iterator();
}
//map
if(items instanceof Map){
this.items = ((Map)items).entrySet().iterator();
}
//object[]
if(items instanceof Object[]){
this.items = Arrays.asList((Object[])items).iterator();
}

}

public void setVar(String var) {
this.var = var;
}

@Override
public void doTag() throws JspException, IOException {
//完成功能:将获得的list信息遍历输出到浏览器

while(items.hasNext()){
Object str = items.next();
//将结果放置到作用域
this.getJspContext().setAttribute(var, str);
//将el表达式的结果数据到浏览器
this.getJspBody().invoke(null);
}
}




}
分享到:
评论

相关推荐

    cms后台管理

    //这个模板就是自己声明的,即content_list.html,如果采用自定义模板的话,页面中可以只写上标签,并添加上标签内需要的几个参数,不需要写标签体的内容,会去自动调用模板中的标签体。 FrontUtils.includeTpl(TPL...

    廖雪峰 Java 教程.doc

    输入和输出 if判断 switch多重选择 while循环 do while循环 for循环 break和continue 数组操作 遍历数组 数组排序 多维数组 命令行参数 面向对象编程 面向对象基础 方法 构造方法 方法重载 继承 ...

    freemarker总结

    list指令是一个迭代输出指令,用于迭代输出数据模型中的集合,list指令的语法格式如下: &lt;#list sequence as item&gt; ... &lt;/#list&gt; 上面的语法格式中,sequence就是一个集合对象,也可以是一个表达式,但该表达式将返回...

    java培训机构内部预习文档

    集合框架 Collection、List、Set、Map的接口及其实现类、迭代、Hash 算法与 hashCode 方法、comparable、泛型 chp12.异常 概念、分类、产生、传递、处理、自定义异常 chp13.线程 概念、创建、状态转换、数据共享、...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例034 使用for循环输出杨辉三角 43 实例035 使用嵌套循环在控制台上输出 九九乘法表 44 实例036 用while循环计算1+1/2!+1/3!…1/20! 45 实例037 for循环输出空心的菱形 46 实例038 foreach循环优于for循环 47 实例...

    java初学者必看

    4.4.3 标签语句 4.5 返回语句 4.6 综合实例:水仙花数 4.7 本章习题 第5章 字符串 5.1 字符串简介 5.1.1 字符串常量 5.1.2 String创建字符串常量 5.1.3 StringBuffer创建字符串 5.2 连接字符串 5.2.1 与...

    python入门到高级全栈工程师培训 第3期 附课件代码

    08 JS的数组对象 09 JS的函数对象 第42章 01 JS的函数作用域 02 JS的window对象之定时器 03 JS的history对象和location对象 04 JS的DOM节点 05 JS的DOM节点 第43章 01 上节知识回顾 02 js之onsubmit事件与组织...

    javabiginteger源码-mock:java版的可以模拟生成任意数据的框架

    支持丰富多样的数据类型模拟,包括:Java基本类型、字符串、枚举、日期、数组、多维数组、集合[List|Set|Map]、枚举、Java对象等 支持泛型 支持继承 支持循环依赖、自依赖(手动开启enabledCircle) 支持忽略字段 支持...

    传智播客扫地僧视频讲义源码

    08_C动态库升级成框架案例_方法1动态库中直接添加回调函数_传智扫地僧 09_C动态库升级成框架案例_方法2把回调函数缓存到动态库_编写 10_C动态库升级成框架案例_方法2把回调函数混存到动态库_测试 11_C++基础课程day...

    疯狂JAVA讲义

    第1章 Java概述 1 1.1 Java语言的发展简史 2 1.2 Java的竞争对手及各自优势 4 1.2.1 C#简介和优势 4 1.2.2 Ruby简介和优势 4 ...11.8.2 使用ImageIO输入/输出位图 427 11.9 剪贴板 432 11.9.1 数据传递的类...

    Java范例开发大全 (源程序)

     实例23 利用for循环输出几何图形 36  实例24 杨辉三角 38  3.3 while语句 39  实例25 求1到100之间的和 39  实例26 存上100元需要多少天 40  实例27 输出100之间的所有偶数 41  实例28 如何判断回文...

    java范例开发大全(pdf&源码)

    实例23 利用for循环输出几何图形 36 实例24 杨辉三角 38 3.3 while语句 39 实例25 求1到100之间的和 39 实例26 存上100元需要多少天 40 实例27 输出100之间的所有偶数 41 实例28 如何判断回文数字 42 3.4 do…while...

    java范例开发大全源代码

     实例23 利用for循环输出几何图形 36  实例24 杨辉三角 38  3.3 while语句 39  实例25 求1到100之间的和 39  实例26 存上100元需要多少天 40  实例27 输出100之间的所有偶数 41  实例28 如何判断...

    java范例开发大全

    实例23 利用for循环输出几何图形 36 实例24 杨辉三角 38 3.3 while语句 39 实例25 求1到100之间的和 39 实例26 存上100元需要多少天 40 实例27 输出100之间的所有偶数 41 实例28 如何判断回文数字 42 3.4 do…while...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

    9.1.2 具有索引的list 263 9.1.3 内容不重复的set 266 9.1.4 支持队列操作的queue 270 9.1.5 访问对象的iterator 273 9.1.6 排序收集的对象 276 9.1.7 使用泛型 280 9.2 键值对应的map 284 9.2.1 ...

Global site tag (gtag.js) - Google Analytics