码迷,mamicode.com
首页 > 其他好文 > 详细

自定义标签

时间:2015-06-30 12:22:31      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:

自定义标签
    step1,写一个java类,继承SimpleTagSupport类,有属性的话给get、set方法
    step2,在doTag方法里面,编写相应的处理逻辑。
    step3,描述标签。要在.tld文件里面描述,并且, .tld文件要放到WEB-INF\下。
        注意:
            body-content用来告诉容器,标签有没有标签体,如果有,可以出现哪些内容。


        //没有标签体
        <body-content>empty</body-content>


        //可以有标签体,但是,标签体的内容不能够
        //出现java代码(<%   %>,<%=  %>,<%!  %>)
        <body-content>scriptless</body-content>


        //有标签体,并且,标签体的内容可以出现java
        //代码。只有复杂标签技术才支持JSP,简单
        //标签技术只支持empty,scriptless
        <body-content>JSP</body-content>

如:自定义一个标签,实现给定字符串,在页面打印指定次数的功能

 

  新建mytag包,新建HelloTag类,继承SimpleTagSupport类

package mytag;

import java.io.IOException;

import javax.servlet.jsp.JspContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/**
 *  自定义标签
 *  需要继承SimpleTagSuppor类,属性需要get,set方法,重写doTag方法
 *  在WEB-INF下面新建对应的.tld文件并完成相关的配置
 *  这样在JSP页面就可以使用自定义的标签了
 */
public class HelloTag extends SimpleTagSupport {
    private String str;
    private int count;
    @Override
    public void doTag() throws JspException, IOException {
        JspContext jspContext = this.getJspContext();
        JspWriter out = jspContext.getOut();
        for (int i = 0; i < count; i++) {
            out.println(str+"<br/>");
        }
        
    }
    public String getStr() {
        return str;
    }
    public void setStr(String str) {
        this.str = str;
    }
    public int getCount() {
        return count;
    }
    public void setCount(int count) {
        this.count = count;
    }
    
}

在WEB-INF下面新建.tld文件,并进行配置

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
    
  <tlib-version>1.1</tlib-version>
  <short-name>cc</short-name>
  <uri>com.liuijunfen.mytag</uri>

  <tag>
    <name>ps</name>
    <tag-class>mytag.HelloTag</tag-class>
    <body-content>empty</body-content>
    <attribute>
        <name>count</name>
        <required>false</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
        <name>str</name>
        <required>false</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
    
  </tag>

</taglib>

这样我们在JSP页面就可以使用我们自定义的标签

<%@ page import="java.util.*" 
    pageEncoding="UTF-8"
    contentType="text/html;charset=UTF-8"%>
<%@taglib uri="com.liuijunfen.mytag" prefix="cc" %>
<html>
  <head>
  </head>  
  <body><br>
   <cc:ps str="Hello" count="10" />
  </body>
</html>

说明:cc就是short-name,ps就是tag里name的值str,和count是属性

         这样就完成了在页面打印10次Hello的功能

 

自定义标签

标签:

原文地址:http://www.cnblogs.com/liujunfen/p/4609752.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!