1.jsp代码

  1. 测试数据
  2. <%
  3. List<String> list = new ArrayList<String>();
  4. list.add("aaa");
  5. list.add("bbb");
  6. list.add("ccc");
  7. request.setAttribute("list", list);
  8. %>
  9. <%
  10. int[] array = { 1, 3, 5 };
  11. request.setAttribute("array", array);
  12. %>
  13. 调用foreach标签
  14. <t:foreach var="i" items="${list }"> ${i }<br /> </t:foreach>
  15. <t:foreach var="i" items="${array }"> ${i }<br /> </t:foreach>

2.tld文件代码

  1. <tag>
  2. <name>foreach</name>
  3. <tag-class>de.bvb.web.tag.ForeachTag</tag-class>
  4. <body-content>scriptless</body-content>
  5. <attribute>
  6. <name>items</name>
  7. <required>true</required>
  8. <rtexprvalue>true</rtexprvalue>
  9. </attribute>
  10. <attribute>
  11. <name>var</name>
  12. <required>true</required>
  13. <rtexprvalue>false</rtexprvalue>
  14. </attribute>
  15. </tag>

3.标签类代码

  1. package de.bvb.web.tag;
  2.  
  3. import java.io.IOException;
  4. import java.lang.reflect.Array;
  5. import java.util.ArrayList;
  6. import java.util.Collection;
  7. import java.util.Iterator;
  8. import java.util.Map;
  9.  
  10. import javax.servlet.jsp.JspException;
  11. import javax.servlet.jsp.tagext.SimpleTagSupport;
  12.  
  13. public class ForeachTag extends SimpleTagSupport {
  14. private String var;
  15. private Object items;
  16. private Collection collection;
  17.  
  18. public void setVar(String var) {
  19. this.var = var;
  20. }
  21.  
  22. public void setItems(Object items) {
  23. this.items = items;
  24. if (items instanceof Collection) {
  25. collection = (Collection) items;
  26. }
  27. if (items instanceof Map) {
  28. collection = ((Map) items).entrySet();
  29. }
  30. if (items.getClass().isArray()) {
  31. this.collection = new ArrayList();
  32. int length = Array.getLength(items);
  33. for (int i = 0; i < length; i++) {
  34. collection.add(Array.get(items, i));
  35. }
  36. }
  37. }
  38.  
  39. @Override
  40. public void doTag() throws JspException, IOException {
  41. Iterator iterator = this.collection.iterator();
  42. while (iterator.hasNext()) {
  43. Object value = iterator.next();
  44. this.getJspContext().setAttribute(var, value);
  45. this.getJspBody().invoke(null);
  46. }
  47. }
  48. }

javaWeb 使用jsp开发 foreach 标签的更多相关文章

  1. javaWeb 使用jsp开发 if 标签

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  2. 深入分析JavaWeb Item23 -- jsp自己定义标签开发入门

    一.自己定义标签的作用 自己定义标签主要用于移除Jsp页面中的java代码. 二.自己定义标签开发和使用 2.1.自己定义标签开发步骤 1.编写一个实现Tag接口的Java类(标签处理器类) 要编写一 ...

  3. javaWeb 使用jsp开发 html过滤标签

    1.jsp调用代码 <t:htmlFilter> <a href="${pageContext.request.contextPath }/index.jsp"& ...

  4. javaWeb 使用jsp开发 if else 标签

    1.jsp页面调用代码 <t:choose> <t:when test="${user==null }">还没有登录</t:when> < ...

  5. JavaWeb之 JSP:自定义标签

    当jsp的内置标签和jstl标签库内的标签都满足不了需求,这时候就需要开发者自定义标签. 自定义标签 下面我们先来开发一个自定义标签,然后再说它的原理吧! 自定义标签的开发步骤 步骤一 编写一个普通的 ...

  6. JavaWeb之 JSP:自定义标签的创建和使用

    当jsp的内置标签和jstl标签库内的标签都满足不了需求,这时候就需要开发者自定义标签. 下面我们先来开发一个自定义标签,然后再说它的原理吧! 自定义标签的开发步骤 步骤一 编写一个普通的java类, ...

  7. javaWeb中struts开发——Logic标签

    1.Struts标签的logic标签 Logic标签是逻辑标签,是Struts中比较重要的标签,完成各种逻辑运算操作,可以直接支持全局调转. 2.1<logic:present><l ...

  8. Jsp开发自定义标签,自定义标签将字符串转成指定的时间格式显示

    本例以将 字符串格式的时间转成指定的时间格式显示. 第一步.定义一个标签处理程序类,需要集成javax.servlet.jsp.tagext.TagSupport,代码如下: import java. ...

  9. javaWeb中struts开发——Bean标签

    1.struts标签库中常用标签 使用myeclise标签可以自动注入,其中,前三个是经常使用的,主要的是logic标签 2.Bean标签 Bean标签主要用来定义和访问JavaBean,在Strut ...

随机推荐

  1. Android 动态添加删除ExpandableListView的item的例子

    这个例子可以学习到如下几点: 1.通过自定义Dialog(单独布局的xml文件进行弹出显示) 2.通过menu点击监听添加,删除view中的items 3.点击ExpandableListView中g ...

  2. kernel 模块与简单 hello 模块

    Kernel 模块与简单 hello 模块 kernel 模块的简介 Linux 内核进行扩展时,例如编写驱动程序.netfilter功能等,最方便的方式是通过编写模块,然后加载到内核中.由于 ker ...

  3. android Shader类简介_渲染图像示例

    Android中提供了Shader类专门用来渲染图像以及一些几何图形,Shader下面包括几个直接子类,分别是BitmapShader. ComposeShader.LinearGradient.Ra ...

  4. oracle修改sys用户密码

  5. Oracle 10046 trace文件分析

    生成10046 trace文件: SQL> create table t10046 as select * from dba_objects; Table created. SQL> se ...

  6. runcluvfy.sh运行结果

    $ ./runcluvfy.sh stage -pre crsinst -n rac11g1,rac11g2 -verbose Performing pre-checks for cluster se ...

  7. JQuery 回到顶部效果

    图片,CSS/HTML/JS代码都在,可以直接用了. CSS代码 <style type="text/css"> #gs_feedback_gotop { _displ ...

  8. SQL Server 2008中的Service SID 介绍

    [介绍] 我们打开SQL Server 2008 Management Studio, 会发现有如下几个登录: NT SERVICE\ClusSvc, NT SERVICE\MSSQL$KATMAI和 ...

  9. tomcat war包部署

    平常的开发我们都是通过IDE进行项目的部署,但有时候我们不得不进行手工部署(例如在Server上). 手工部署分为以下几步: 第1步: 用maven打war包 (假如得到的war包名为: appkit ...

  10. ADO.net 实体类 、数据访问类

    程序分三层:界面层.业务逻辑层.数据访问层 比较规范的写程序方法,要把业务逻辑层和数据访问层分开,此时需要创建实体类和数据访问类 实体类: 例 using System; using System.C ...