您的位置:首页 > Web前端 > JavaScript

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

2014-07-10 10:24 387 查看
<%@ 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")  +  "版权所有 ©" + startYear;                         
            String info = new String(copyPre.getBytes("GB2312"), "ISO8859_1");
            pageContext.getOut().println(info); 
        }
        catch(IOException e){}
        return EVAL_PAGE;
    }   
}         
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: