JSP的自定义标签(三)之带标签体的标签
2016-02-18 20:31
597 查看
带标签体的标签,可以在标签内嵌入其它内容(包括静态HTML内容和动态的JSP内容),通常用于完成一些逻辑运算,例如判断和循环等。
1. 创建标签的类
下面我们创建一个类IteratorTag.java,这个类的主要做用就是用于存放jsp页面的放入列表值,可能是多个,那么通过使用该标签可以依次读取出来。标签处理类的doTag()方法首先从pagea范围内获取了指定的名称Collexction对象,然后遍历Collection对象的元素,每次遍历都调用了getJspBody()方法。标签作用:每遍历一个集合元素,即输出标签体一次。public class IteratorTag extends SimpleTagSupport { // 标签属性,用于指定需要被迭代的集合 private String collection; // 标签属性,指定迭代集合元素,为集合元素指定的名称 private String item; // collection的setter和getter方法 public void setCollection(String collection) { this.collection = collection; } public String getCollection() { return this.collection; } // item的setter和getter方法 public void setItem(String item) { this.item = item; } public String getItem() { return this.item; } // 标签的处理方法,标签处理类只需要重写doTag()方法 public void doTag() throws JspException, IOException { // 从page scope中获取名为collection的集合 Collection itemList = (Collection)getJspContext(). getAttribute(collection); // 遍历集合 for (Object s : itemList) { // 将集合的元素设置到page范围内 getJspContext().setAttribute(item, s ); // 输出标签体 getJspBody().invoke(null); } } }
2. 定义标签库
下面定义一个标签库,这个库规定不能出现JSP脚本。<pre name="code" class="html"><tag> <!-- 定义标签名 --> <name>iterator</name> <!-- 定义标签处理类 --> <tag-class>lee.IteratorTag</tag-class> <!-- 定义标签体不允许出现JSP脚本 --> <body-content>scriptless</body-content> <!-- 配置标签属性:collection --> <attribute> <name>collection</name> <required>true</required> <fragment>true</fragment> </attribute> <!-- 配置标签属性:item --> <attribute> <name>item</name> <required>true</required> <fragment>true</fragment> </attribute> </tag>
3. 使用标签
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@ page import="java.util.*"%> <!-- 导入标签库,指定mytag前缀的标签, 由http:// www.linjw.taglib的标签库处理 --> <%@ taglib uri="http://www.crazyit.org/mytaglib" prefix="mytag"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> 带标签体的标签-迭代器标签 </title> <meta name="website" content="http://www.linjw.taglib" /> </head> <body> <h2>带标签体的标签-迭代器标签</h2><hr/> <% //创建一个List对象 List<String> a = new ArrayList<String>(); a.add("疯狂Java"); a.add("www.crazyit.org"); a.add("www.fkit.org"); //将List对象放入page范围内 pageContext.setAttribute("a" , a); %> <table border="1" bgcolor="#aaaadd" width="300"> <!-- 使用迭代器标签,对a集合进行迭代 --> <mytag:iterator collection="a" item="item"> <tr> <td>${pageScope.item}</td> <tr> </mytag:iterator> </table> </body> </html>
4. 总结
对于JSP的标签开发,可能在实际应用比较少见,但是在架构比较好的系统,或系统的严密性比较强,一般都会用到该技术。由于笔者的时间有限,所以在些只介绍了这些JSP的自定义标签,感兴趣的读者还可以去了解将一个页面的片段作为属性的标签,及动态属性的标签。相关文章推荐
- JavaScript中记一个关于对象属性赋值的小问题
- JSP的自定义标签(二)之带属性的标签
- javascript日历插件
- JSP的自定义标签(一)
- JavaScript中关于数值转换的问题
- 跟我一起学extjs5(19--模块记录的拖放删除、拖放复制新增)
- js与原生通讯机制
- 使用Gson进行JSON处理
- Javascript封装
- OC与JS交互
- 百度touch.js真坑
- 使用Ajax方式POST JSON数据包(转)
- js中(function(){…})()立即执行函数写法理解
- 自学javascript笔记_自用_解析W3school的代码_JS对象
- javascript特效--制作背景电子钟(整点时祝贺生日快乐)
- jsp原理
- 自学javascript笔记_自用_解析W3school的代码_创建删除节点
- 四款工具顺利实现 Python 与 JavaScript 间的代码转换
- js常用字符串方法汇总
- javascript 正则表达式中 中括号的“坑”