特别说明:如果能帮助到您,请您留下点滴痕迹,让我知道我的存在是有意义的;如果不能帮助到您,请接受我的歉意;
动态属性标签相对普通标签的额外要求
(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>