带标签体的自定义标签

来源:互联网 发布:数据挖掘工程师面试题 编辑:程序博客网 时间:2024/05/16 12:59

标签处理类
以迭代器为例

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>
0 0
原创粉丝点击