Macros

给我一支烟!请所有烦恼都能过往如云烟!

导航

自定义标识的实现的步骤

                                     自定义标识的制作时必须实现的步骤
1.新建一个类他派生自Tag或TagSupport
2.在新建的这个类里面必须的函数有:
   doStartTag()throws JspException
   和
   doEndTag()throws JspException
   一般的代码都写在doStartTag()里面的
   注:如果你的类是派生自Tag的话则必须声明setPageContext,setParent
   getParent,doStartTag,doEndTag release方法而TagSupport则只要
   doStartTag,doEndTag方法就行了.
3.创建*.tld文件放在WEB-INF目录下:
  其内容必须有如下的格式:
  <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE taglib
   PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
          "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
 <taglib>
   <tlib-version>1.0</tlib-version>
   <jsp-version>1.1</jsp-version>
   <short-name>mytag标识</short-name>
   <uri></uri>
   <tag>
     <!--定义hello的标识名字-->
     <name>hello</name>
     <!--定义hello标识的关联类-->
     <tag-class>tags.HelloTag</tag-class>
     <body-content>empty</body-content>
   </tag>
 </taglib>
   注:tags.HelloTag 中 tags:包名  HelloTag:类名
4.配置*.XML文件
  其内容必须有:
        <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
 <web-app>
   <display-name>mytag</display-name>
   <taglib>
     <taglib-uri>/WEB-INF/*.tld</taglib-uri>
     <taglib-location>/WEB-INF/*.tld</taglib-location>
   </taglib>
 </web-app>
 注:/WEB-INF/*.tld 中 *为tld名
5.建一个jsp文件在开始声明如下:
  <%@ taglib uri="WEB-INF/mytaglib.tld" prefix="mytag" %>
  在使用这个mytag标签
  <mytag:hello/>
  其中属性hello在*.tld中定义的:
     <tag>
     <!--定义hello的标识名字-->
     <name>hello</name>
     <!--定义hello标识的关联类-->
     <tag-class>tags.HelloTag</tag-class>
     <body-content>empty</body-content>
     </tag>
     它的属性名为:hello
     处理它的类为:tags.HelloTag
     它的主体内容为:empty
6:在doStartTag和doEndTag中的返回值:
   * SKIP_BODY: 表示该标识不包括JSP文件的内容处理
   * SKIP_PAGE: 表示该标识不检查剩余的JSP内容,
    EVAL_PAGE:是指不销毁(交给Garbage Collection)放回池中回收利用. 

7. <attribute>:标识定义传入参数名字
   例:
   <tag>
   <name>helloparam<name>
    <tag-class>tags.HelloTagParam<tag-class>
    <body-content>empty</body-content>
    <attribute>
       <name>param1</name>
    </attribute>
    </tag>
    则:在处理类里就有要有一个setParam()方法和一个成员变量param1。
  
   <required>标识定义该参数是否是helloparam标识必须声明的参数
8.取得标识之间的内容类:
  BodyContent bodyContent;
  setBodyContent(BodyContent bodyContent)
  {
     this.bodyContent = bodyContent;
  }
 
 

posted on 2005-08-22 10:30  Macros  阅读(217)  评论(0)    收藏  举报