特别说明:如果能帮助到您,请您留下点滴痕迹,让我知道我的存在是有意义的;如果不能帮助到您,请接受我的歉意;
动态属性标签相对普通标签的额外要求
(1)、标签处理类在继承SimpleTagSupport之外,还需要实现DynamicAttributes接口;
(2)、使用子元素指定该标签支持动态属性;
(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 keys = new ArrayList();
//保存每个属性值的集合
private ArrayList values = new ArrayList();
@Override
public void doTag() throws JspException, IOException
{
JspWriter out = getJspContext().getOut();
//此处只是简单地输出每个属性
out.println("
- ");
for( int i = 0; i < keys.size(); i++ )
{
String key = keys.get( i );
Object value = values.get( i );
out.println( "
" + key + " = " + value + "" );}
out.println("
");}
@Override
public void setDynamicAttribute( String uri, String localName,
Object value )
throws JspException
{
//添加属性名
keys.add( localName );
//添加属性值
values.add( value );
}
}=>mytaglib.tld
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">
1.0
mytaglib
http://blog.csdn.net/cyb_23/mytaglib
dynaAttr
lee.DynaAttributesTag
empty
true
=>dynaAttrTag.jsp
/p>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
动态属性标签下面显示动态属性标签内容
指定两个属性
指定四个属性
出版时间="2008年" 描述="Java图书"/>