- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在JSP中用自定义标签实现集合的遍历—山寨版cforeach
【文章标题】在JSP中用自定义标签实现集合的遍历——山寨版 c:foreach
【文章作者】曾健生
【作者邮箱】zengjiansheng1@126.com
【作者QQ】1座机电话号码
*******************************************************************************
在JSTL中,标签 c:foreach /c:foreach 可方便地遍历集合或数组,在了解了自定义标签后,可动手实现 c:foreach 标签的功能。
在编写自定义标签前,总要把实验环境搭建好^-^
首先,定义一个Person类,在实验的集合中就是存放这个类的实例,代码如下:
package com.javaeye.newjueqi;
/**
* 实验类Person
*/
public class Person private String name;
private int age;
public String getName return name; public void setName String name name; public int getAge return age; public void setAge int age this.age age; 既然是遍历集合,那么集合也是必须的,我们在测试页面TestMyELTag.jsp上写下如下的JSP代码,生成一个测试用途的集合ArrayList,集合中有三个元素
%
//第1个人对象
Person p1 new Person ;
p1.setName Tom ;
p1.setAge 23 ;
//第2个人对象
Person p2 new Person ;
p2.setName Mike ;
p2.setAge 33 ;
//第3个人对象
Person p3 new Person ;
p3.setName Jack ;
p3.setAge 43 ;
ArrayList list new ArrayList ;
list.add p1 ;
list.add p2 ;
list.add p3 ;
//把ArrayList存储在application
pageContext.setAttribute PersonList, list ; % c:foreach 前,有必要先了解一下正版的 c:foreach 的标准用法是怎么样的。如果用 c:foreach 遍历上述的集合写法如下: c:forEach items $ pageScope.personlist var per $ -- $ per.age /c:forEach
c:foreach 是循环控制,可以将集合中的成员循序遍历一遍,运行方式为条件符合时,将会重复执行 c:foreach 的本体内容。
c:foreach 中的属性的含义:items是被迭代的集合对象,var是用来存放现在指向的成员,上面的代码运行后的结果如图1所示: 图1
我们实现一个自定义的标签 newjueqi: myforEach ,模拟实现 c:forEach 的功能,用法如下:
!-- 使用自定义标签模拟实现 c:forEach 中集合的遍历功能 -- newjueqi:myforEach items $ pageScope.personlist var per $ -- $ per.age /newjueqi:myforEach /**
* 完成模拟 c:forEach 标签遍历集合的功能
*/
public void doTag throws JspException, IOException // 定义一个迭代器
Iterator i null;
//如果集合是Colleciton类型
if items instanceof Collection //获取Collection的迭代器 i Collection items .iterator ; //如果集合是数组类型
else if items instanceof Object[] //用Arrays的静态方法asList把数组转换为一个List集合,由于asList接受的参数 //是可变参数,所以为了防止转换出错必须要把传入 的参数强制为数组 i Arrays.asList Object[] items .iterator ; else throw new RuntimeException 不能转换 ; //进行迭代
while
文档评论(0)