利用BodyTagSupport创建带标签体的自定义标签


参考:http://book.51cto.com/art/201004/193462.htm




1. 创建自定义标签的处理类ToUpperCase.java,需要继承BodyTagSupport类。

package com.zhuomuniao.myproject.commons.taglib;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;

@SuppressWarnings("serial")
public class ToUpperCase extends BodyTagSupport {

	private String	var	= null; //定义一个存放结果的变量  

	public String getVar() {
		return var;
	}

	public void setVar(String var) {
		this.var = var;
	}

	//标签开始时调用的处理方法  
	public int doStartTag() throws JspException {
		//表示需要处理标签体  
		return EVAL_BODY_BUFFERED;
	}

	//判断了标签体内容之后调用的处理方法  
	public int doAfterBody() throws JspException {
		//取得标签体对象  
		BodyContent body = getBodyContent();
		//取得标签体的字符串内容  
		String content = body.getString();
		//清除标签体中的内容  
		body.clearBody();
		//将内容转换成大写  
		content = content.toUpperCase();
		//在pageContext对象中保存变量  
		pageContext.setAttribute(var, content);
		//结束对标签体的处理  
		return SKIP_BODY;
	}
}

2. 创建标签库描述文件zhuomuniao.tld

<?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的版本号 -->
 	<jsp-version>1.2</jsp-version>
 	<!-- 标签库的默认前缀 -->
 	<short-name>zhuomuniao</short-name>
 	<!-- 标签库的唯一访问标识符 -->
 	<uri>/zhuomuniao</uri>

 	<!-- 定义一个标签 -->
	<tag>

  	<!-- 标签的名字 -->
  	<name>ToUpperCase</name>
	<!-- 标签的处理类 -->
  	<tag-class>com.zhuomuniao.myproject.commons.taglib.ToUpperCase</tag-class>
 	<!--标签体的内容:empty表示没有标签体,JSP表示标签体可以加入JSP程序代码,tagdependent表示标签体中的内容由标签自己处理 -->
  	<body-content>tagdependent</body-content>

  	<!-- 定义标签变量 -->
  	<variable>
	    <!-- 变量名称 -->
	    <name-from-attribute>var</name-from-attribute>  
	    <!-- 变量类型 -->
	    <variable-class>java.lang.String</variable-class>
	    <!-- 变量作用范围:NESTED开始和结束标签之间,AT_BEGIN从开始标签到页面结束,AT_END在结束标签之后直到页面结束 -->
	    <scope>AT_BEGIN</scope>  
  	</variable> 

  	<!-- 定义标签的属性 --> 
  	<attribute>  
    	<!-- 属性名称 -->
	    <name>var</name> 
	    <!-- 属性是否必需 --> 
	    <required>true</required>  
  	</attribute>
            
	</tag> 

</taglib>

3. web.xml配置,在其中加入标签信息的配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	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-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <jsp-config>
    <taglib>
      <taglib-uri>zhuomuniao</taglib-uri>
      <taglib-location>/WEB-INF/tld/zhuomuniao.tld</taglib-location>
    </taglib>
  </jsp-config>  
  
</web-app>

4. 创建一个使用自定义标签的JSP测试页面test.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="zhuomuniao" prefix="zhuomuniao" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My Tag</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
  </head>
  <body>
    <zhuomuniao:ToUpperCase var="result">asdfghjkl</zhuomuniao:ToUpperCase>  
    转换结果:<%=result%>  
  </body>
</html>

测试结果截图



代码下载地址: http://download.csdn.net/detail/chuzhenbin/4159281




=================以上===================





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值