学习笔记:自定义标签 foreach
2013-11-03 22:08
274 查看
实现自定义标签的步骤:
sun公司的部分源码为:
基本数组类型的时候,相同的代码写了八次。
利用Object的getclass方法 可以简化:
tld文件的配置:
然后就可以使用:
//1.继承SimpleTagSurpport类 //2.复写doTag()方法 //3.tld文件中配置 //4.jsp文件中导入
sun公司的部分源码为:
if(items instanceof Object[]){ Object arg[] = (Object[]) items; collection = Arrays.asList(arg); //list } if(items instanceof int[]){ int temp[] = (int[])items; collection = new ArrayList(); for(int num : temp){ collection.add(num); } } if(items instanceof short[]){ } if(items instanceof byte[]){ }
基本数组类型的时候,相同的代码写了八次。
利用Object的getclass方法 可以简化:
public class ForEachTag extends SimpleTagSupport { private Object iteams; private String var; //用string 作为一个名字而已; jsp中会用 var='name'; ${name} private Collection collection; public void setIteams(Object iteams) { this.iteams = iteams; if(iteams instanceof Collection){ collection = (Collection) iteams; } if(iteams instanceof Map){ Map map = (Map) iteams; collection = map.entrySet(); } if(iteams.getClass().isArray()){ collection = new ArrayList(); int len = Array.getLength(iteams);//这利用了反射* for(int i=0; i<len;i++){ Object obj = Array.get(iteams, i); collection.add(obj); } } } public void setVar(String var) { this.var = var; } public void doTag() throws JspException, IOException { PageContext pagecontext = (PageContext) this.getJspContext(); Iterator it = collection.iterator(); while(it.hasNext()){ Object obj = it.next(); pagecontext.setAttribute(var,obj); this.getJspBody().invoke(null); } } }
tld文件的配置:
<tag> <name>foreach</name> <tag-class>cn.tanc.web.tag.ForEachTag</tag-class> <body-content>scriptless</body-content> <attribute> <name>iteams</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>var</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag>
然后就可以使用:
<%@taglib uri="/****" prefix="***" %> <***:foreach iteams="" var=""> balabalabala </***:foreach>
相关文章推荐
- [原创]java WEB学习笔记41:简单标签之带属性的自定义标签(输出指定文件,计算并输出两个数的最大值 demo)
- JSP2.0 tags自定义标签学习笔记
- 自定义标签学习笔记
- struts学习笔记 [JSTL]<c:forEach>标签的使用
- Django学习笔记 自定义标签
- 自定义标签学习笔记
- Jquery学习笔记: attr和 prop的区别,以及为html标签自定义属性
- Javaweb学习笔记6—EL表达式与JSTL及自定义标签
- jsp自定义标签学习笔记
- Apache Shiro学习笔记(八)自定义标签
- [原创]java WEB学习笔记40:简单标签概述(背景,使用一个标签,标签库的API,SimpleTag接口,创建一个自定义的标签的步骤 和简单实践)
- jsp自定义标签学习笔记
- JSP学习笔记(六):自定义标签-JSP2.x
- <学习html>第四天笔记-注释标签;相对路径,绝对路径;有序列表,无序列表,自定义列表;总结
- JSP学习笔记(五):自定义标签-JSP1.x
- JSP学习笔记(七):自定义方法标签
- JSP自定义标签学习笔记
- python 学习笔记十八 django深入学习三 分页,自定义标签,权限机制
- [原创]java WEB学习笔记42:带标签体的自定义标签,带父标签的自定义标签,el中自定义函数,自定义标签的小结
- Qt学习笔记:自定义窗体的移动+控件图标