Java_JSP2_如何使用动态标签?

特别说明:如果能帮助到您,请您留下点滴痕迹,让我知道我的存在是有意义的;如果不能帮助到您,请接受我的歉意;

动态属性标签相对普通标签的额外要求
 (1)、标签处理类在继承SimpleTagSupport之外,还需要实现DynamicAttributes接口;
 (2)、使用<dynamic-attributes.../>子元素指定该标签支持动态属性;
 (3)、在重写doTag()方法后还得重写setDynamicAttribute()方法,此方法用于为该标签处理类动态地添加属性名和属性值;

=>DynaAttributesTag.java

package lee;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;
import java.util.*;
/**
 * DynaAttributesTag_class
 * description:动态属性标签_简单输出动态加入的属性名和属性值;
 * @author cyb_23
 * @version 1.0
 */
public class DynaAttributesTag extends SimpleTagSupport implements DynamicAttributes
{
	//保存每个属性名的集合
	private ArrayList<String> keys = new ArrayList<String>();
	//保存每个属性值的集合
	private ArrayList<Object> values = new ArrayList<Object>();

	@Override
	public void doTag() throws JspException, IOException
	{
		JspWriter out = getJspContext().getOut();
		//此处只是简单地输出每个属性
		out.println("<ol>");
		for( int i = 0; i < keys.size(); i++ )
		{
			String key = keys.get( i );
			Object value = values.get( i );
			out.println( "<li>" + key + " = " + value + "</li>" );
		}
		out.println("</ol>");
	}
	
	@Override
	public void setDynamicAttribute( String uri, String localName, 
		Object value ) 
		throws JspException
	{
		//添加属性名
		keys.add( localName );
		//添加属性值
		values.add( value );
	}
}
=>mytaglib.tld

<?xml version="1.0" encoding="GBK"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
	version="2.0">
	<tlib-version>1.0</tlib-version>
	<short-name>mytaglib</short-name>

	<!-- 标签库 URI -->
	<uri>http://blog.csdn.net/cyb_23/mytaglib</uri>

	<!-- 定义接受动态属性的标签 -->
<span style="white-space:pre">	</span><tag>
        <span style="white-space:pre">	</span><name>dynaAttr</name>
        <span style="white-space:pre">	</span><tag-class>lee.DynaAttributesTag</tag-class>
        <span style="white-space:pre">	</span><body-content>empty</body-content>
		<!-- 指定支持动态属性 -->
        <span style="white-space:pre">	</span><dynamic-attributes>true</dynamic-attributes>
    </tag>
</taglib>

=>dynaAttrTag.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!-- 导入标签库,指定mytag前缀的标签 -->
<%@ taglib uri="http://www.crazyit.org/mytaglib" prefix="mytag"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>动态属性标签</title>
	<meta name="website" content="http://blog.csdn.net/cyb_23" />
</head>
<body bgcolor="#ffffc0">
<h2>下面显示动态属性标签内容</h2>
<h4>指定两个属性</h4>
<mytag:dynaAttr name="crazyit" url="crazyit.org"/><br/>
<h4>指定四个属性</h4>
<mytag:dynaAttr 书名="疯狂Java讲义" 价格="99.0"
	出版时间="2008年" 描述="Java图书"/><br/>
</body>
</html>




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值