Foreach自定义标签的开发(适用于各种集合)

package com.lovesmile.oa.web.mytag;

import java.io.IOException;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/**
 * 自定义标签开发(Foreach)
 * @author 微笑风采
 *
 */
public class Foreach extends SimpleTagSupport {
private Object items;//集合
private String var;//范围存储参数
private Collection collection;//用单链集合储存

public void setItems(Object items) {
this.items = items;
if(items==null){
collection=null;
}
if(items instanceof Map){
this.collection=((Map)items).entrySet();
}
if(items instanceof List){
this.collection=(Collection) items;
}
if(items.getClass().isArray()){
this.collection=new ArrayList();
int length=Array.getLength(items);
for (int i = 0; i < length; i++) {
this.collection.add(Array.get(items, i));
}
}
}
public void setVar(String var) {
this.var = var;
}
@Override
public void doTag() throws JspException, IOException {
if(collection==null)return;
Iterator it = collection.iterator();//迭代
while(it.hasNext()){
Object value=it.next();
this.getJspContext().setAttribute(var, value);//重复更新参数,输出
this.getJspBody().invoke(null);
}
super.doTag();
}

}
xml中的配置参数()
 <!-- foreach -->
   <tag>
    <name>Foreach</name>
    <tag-class>com.lovesmile.oa.web.mytag.Foreach</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>

破晓博客-自定义标签的开发相关推荐

  1. java毕业论文_【毕业论文】基于java的博客网站设计与开发毕业论文(word文档)

    <[毕业论文]基于java的博客网站设计与开发毕业论文.doc>由会员分享,可免费在线阅读全文,更多与<[毕业论文]基于java的博客网站设计与开发毕业论文(word文档)>相 ...

  2. YDOOK:CSDN博客自定义模块图片

    YDOOK:CSDN博客自定义模块图片 © YDOOK JY Lin 文章目录 YDOOK:CSDN博客自定义模块图片 © YDOOK JY Lin [外链图片转存失败,源站可能有防盗链机制,建议将图 ...

  3. CSDN博客第一期移动开发排行榜

    为充分展示移动开发方向优秀博主,发掘潜力新星,为想更多了解移动开发方向的博客用户提供平台,CSDN博客频道推出"移动开发排行榜"活动,每月一期.我们将邀请CSDN博客频道活跃的资深 ...

  4. 前端开发 使用html写一个博客 基本标签的体验 0226

    新建一个html文件 写一段文本作为博客的标题 在body中写内容 *号的出现代表,文件有改变 保存文件后消失 快捷键: ctrl + s 效果 当前这个页面已经在一个模拟的服务器上运行了 当代码内容 ...

  5. 如何在CSDN博客自定义栏目中添加“给我写信”

    在"自定义栏目"中添加"连接"(将自己的微博,QQ空间和CSDN博客关联起来)很多人都做过.但是添加"给我写信"这个功能,用的好像不太多.此 ...

  6. 个人博客三|首页后台开发

    声明:本渣渣部分代码参考自TendCode其实有很多代码是不需要自己一行行码出来,生产力是第一位.只有研究型人才需要生产代码,作为一名渣渣拿来用是最高效的做法.程序员都有一个开源的精神,码出来的代码本 ...

  7. 博客园客户端UAP开发随笔 -- App连接云端内容的桥梁:WebView

    当你辛苦的从网上爬下来一篇文章之后,怎么在你的应用内展示这些包含HTML标记的文章?如果你使用的是Javascript开发应用,恭喜你,直接塞进页面就可以了,同时说明你很熟悉页面开发,而现在windo ...

  8. SpringBoot+Vue博客系统---后端接口开发

    Java后端接口开发 从零开始搭建一个项目骨架,最好选择合适,熟悉的技术,并且在未来易拓展,适合微服务化体系等.所以一般以Springboot作为我们的框架基础,这是离不开的了. 然后数据层,我们常用 ...

  9. 博客园客户端UAP开发随笔 -- App UI设计的三大纪律八项注意

    前言 每一个页面都是这个App的门面,尤其是主页面,看上去干净整洁清爽宜人容易操作,那么你的App就成功了一半.这也反映出了你这个开发团队的基本审美素质和设计理念.如果你不是一个团队,而是一个个人开发 ...

最新文章

  1. python数据结构与算法分析_数据结构与算法(Python版)
  2. pve 不订阅更新_??“吃鸡”体验服已无更新,暗夜危机2.0或将被1款新游代替
  3. ]Kinect for Windows SDK开发入门(六):骨骼追踪基础 上
  4. C++递归或非递归实现求斐波拉契数列第n项
  5. Linux下安装Apache Maven安装
  6. linxu命令个人使用总结
  7. 支付接口被阻拦,支付宝提示ILLEGAL_EXTERFACE
  8. 用户故事与敏捷方法—发布计划
  9. 写给 python 程序员的 OpenGL 教程
  10. poj 2387 最短路 spfa 实现
  11. Python获取屏幕坐标,自动发送信息
  12. Linux下编译链接动态库符号问题
  13. java 实现扑克牌洗牌功能
  14. 考研408.计算机网络.特殊IP地址的记忆方法
  15. 解决aria2下载磁力链接或bt文件时没有速度或速度为0
  16. matlab实时摄像头处理,在MATLAB中调用摄像头实时地显示图像
  17. linux bootrom ftp,AR路由器通过BootROM FTP方式升级系统文件的示例
  18. SQL Server之查询检索操作
  19. Qt quick性能提升[通俗易懂]
  20. 花开不败(作者:职烨)

热门文章

  1. 【Python学习】程序练习《购物车程序》
  2. 科学计算法(机器学习)----决策树定义以相关概念
  3. django实现利用邮箱进行登录
  4. codeforces:E. MEX and Increments【贪心 + 略加优化】
  5. 用VC++6.0制作简易浏览器
  6. 关于98% after emitting CopyPlugin个人探索
  7. HTML / CSS 实践练习
  8. 即将前往下一个饭局,你的牙还好吗?丨钛空舱爆款春节特献
  9. Minieye-M3 防撞预警产品硬件系统方案---基于AR0132RGB+MTK架构
  10. 自然语言处理NLP之分词、词性标注(POS)、组块分析(Chunking)、命名实体识别(Named Entity Recognition,简称NER)