带标签体的自定义标签

标签处理类
以迭代器为例

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值