JSP自定义标签之三:为标签添加属性

<%@ taglib uri="WEB-INF/tlds/testlib.tld" prefix="yzj" %>

 

<html>

    <head>    

        <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

        <title>自定义标签简单示例</title>

    </head>                     

    <body>

        <p>这里是正文内容</p>

        <yzj:copyright copyOwner="颜志军" startYear="2008"/>

    </body>

</html>

 

当然,如果像上述JSP文件那样来使用我们自定义的版权标签,还必须修改tld文件中的标签说明,具体地说就是需要为标签说明属性copyOwner与startYear。修改完成之后tld文件如下:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"

"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">

 

<taglib>

    <tlibversion>1.0</tlibversion>

    <jspversion>1.1</jspversion>

    <shortname>yzj</shortname>

   

    <tag>

        <name>copyright</name>

        <tagclass>com.yanzhijun.CopyRightTag</tagclass>

        <bodycontent>empty</bodycontent>

        <attribute>

            <name>copyOwner</name>

        </attribute>

        <attribute>

            <name>startYear</name>

        </attribute>

    </tag>

</taglib>

 

很容易想到,上述修改不会是全部的工作,决定标签显示信息的自定义标签处理程序也必须做出相应的修改才最终会实现通过标签属性设定部分信息的功能。标签处理程序处理标签属性的方式与JavaBeans是完全一样的,即可以通过为标签处理程序添加名称为“set+属性名”的方法取得标签中相应属性所设定值。

修改之后的标签处理程序如下:

package com.yanzhijun;

 

import java.io.*;

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;

 

public class CopyRightTag extends TagSupport

{                           

    private String copyOwner;

    private String startYear;

   

    public void setCopyOwner(String  copyOwner)

    {

        this.copyOwner = copyOwner;

    }                              

   

    public void setStartYear(String  startYear)

    {

        this.startYear = startYear;

    }

   

    public int doEndTag()

    {

        try

        {  

            String copyPre = new String(copyOwner.getBytes("ISO8859_1"), "GB2312")  +  "版权所有&nbsp;&copy" + startYear;                         

            String info = new String(copyPre.getBytes("GB2312"), "ISO8859_1");

            pageContext.getOut().println(info); 

        }

        catch(IOException e){}

        return EVAL_PAGE;

    }   

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值