标签处理类
以迭代器为例
package com.chinaebi.test;
import java.io.IOException;
import java.util.Collection;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/**
* 带标签体的标签
* @author Administrator
*
*/
public class IteratorTag extends SimpleTagSupport{
//标签属性
private String collection;
private String item;
public String getCollection() {
return collection;
}
public void setCollection(String collection) {
this.collection = collection;
}
public String getItem() {
return item;
}
public void setItem(String item) {
this.item = item;
}
@Override
public void doTag() throws JspException, IOException {
//从page scope中获取属性名为collection的集合
Collection itemList=(Collection) getJspContext().getAttribute(collection);
//遍历集合
for (Object object : itemList) {
//将集合的元素设置到page范围
getJspContext().setAttribute(item,object);
//输出标签体
getJspBody().invoke(null);
}
}
}
.tld配置,斜体部分为该标签的配置,在页面需引入uri与配置相同的标签uri,如<%@taglib uri="http://www.chinaebi.org/myTaglib" prefix="myTag" %>
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>A tag library exercising SimpleTag handlers.</description>
<tlib-version>1.0</tlib-version>
<short-name>myTaglib</short-name>
<uri>http://www.chinaebi.org/myTaglib</uri>
<tag>
<description>Outputs Hello, World</description>
<name>helloWorld</name>
<tag-class>com.chinaebi.test.HelloWordTag</tag-class>
<body-content>empty</body-content>
</tag>
<tag>
<name>query</name>
<tag-class>com.chinaebi.test.QueryTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>driver</name>
<required>true</required>
<fragment>true</fragment>
</attribute>
<attribute>
<name>url</name>
<required>true</required>
<fragment>true</fragment>
</attribute>
<attribute>
<name>user</name>
<required>true</required>
<fragment>true</fragment>
</attribute>
<attribute>
<name>sql</name>
<required>true</required>
<fragment>true</fragment>
</attribute>
</tag>
*<tag>
<name>iterator</name>
<tag-class>com.chinaebi.test.IteratorTag</tag-class>
<body-content>scriptless</body-content>
<attribute>
<name>collection</name>
<required>true</required>
<fragment>true</fragment>
</attribute>
<attribute>
<name>item</name>
<required>true</required>
<fragment>true</fragment>
</attribute>
</tag>*
页面的引用
<%
List list= new ArrayList();
list.add("java");
list.add("c++");
list.add("php");
pageContext.setAttribute("list",list);
%>
<table border="1" cellpadding="0" cellspacing="0">
<myTag:iterator item="item" collection="list">
<tr>
<td>${item}</td>
</tr>
</myTag:iterator>
</table>