JSP自定义标签(二)- 传递属性

上一篇写了一个简单的标签,输出的内容都是写死的。这一篇定义一个标签,内容是可以自己编辑的。
首先说一下,我大概要干什么:我想定义这样一个标签,我传给标签两个字符串(一个header,一个items),标签最后会按照table的形式展现出来。

同样要做两件事:

编写标签处理器
注册标签

标签处理器:

package myTag;

import java.io.IOException;
import java.util.StringTokenizer;

import javax.servlet.jsp.JspContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;

public class SecondTag extends SimpleTagSupport {

    /* 标签要接收的属性 */
    private String header;  
    private String items;

    /* sett,gett方法*/
    public void setHeader(String header) {
        this.header = header;
    }
    public void setItems(String items) {
        this.items = items;
    }
    public String getHeader() {
        return header;
    }
    public String getItems() {
        return items;
    }

    public void doTag() throws IOException, JspException {
        JspContext context = getJspContext();
        /* 得到输出对象 */
        JspWriter out = context.getOut();
        out.print("<table style='border:1px solid green'>\n" + 
                    "<tr>" +
                        "<td><span style='font-weight:bole'>" + getHeader() + "</span></td>" +
                    "</tr>");
        StringTokenizer tokenizer = new StringTokenizer(getItems(), ",");
        while(tokenizer.hasMoreElements()) {
            String token = tokenizer.nextToken();
            out.print("<tr>" +
                        "<td>" + token + "</td>" +
                      "</tr>");
        }
        out.print("</table>");
    }
}

注册标签:

<!-- Second Tag -->
    <tag>
        <name>dataFormatter</name>
        <tag-class>myTag.SecondTag</tag-class>
        <body-content>empty</body-content>
        <attribute><!-- header -->
            <name>header</name>
            <required>true</required>
        </attribute>
        <attribute><!-- 类容 -->
            <name>items</name>
            <required>true</required>
        </attribute>
    </tag>

jsp:

<%@ taglib uri="/WEB-INF/mytags.tld" prefix="easy" %>
<%@ page contentType="text/html;charset=UTF-8" language="java"  pageEncoding="UTF-8"  %>
<html>
    <head></head>
    <meta charset="UTF-8"> 
    <body>
        <h1>第一个标签</h1>
        <easy:firstTag></easy:firstTag>
        <br/>
        <h1>第二个标签</h1>
        <easy:dataFormatter header="标题" items="A,B,C" />
        <!-- 可变的输出类容完成 -->
    </body>
</html>
<!-- <%@ page contentType="text/html;charset=UTF-8" language="java"  pageEncoding="UTF-8"  %>
这个不加会出现乱码,如果加上还有乱码,就再去找一下原因,注意jsp的文件编码。 -->

运行结果:
这里写图片描述
(其实自定义标签比较简单,可以理解为定义一个类,然后在类里面获得JspWriter对象,接下来,想怎么输出都可以了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值