标签处理类,继承SimpleTagSupport 并重写doTag方法,实现DynamicAttributes接口和其方法setDynamicAtrributes
package com.chinaebi.test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.DynamicAttributes;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/**
* 动态属性的标签
* @author Administrator
*
*/
public class DynaAttributesTag extends SimpleTagSupport implements DynamicAttributes{
//保存每个属性的集合
private List<String> keys = new ArrayList<String>();
//保存每个属性值的集合
private List<Object> values = new ArrayList<Object>();
@Override
public void setDynamicAttribute(String uri, String localname, Object value)
throws JspException {
keys.add(localname);
values.add(value);
}
@Override
public void doTag() throws JspException, IOException {
JspWriter out = getJspContext().getOut();
out.println("<ol>");
for(int i=0;i<keys.size();i++){
out.print("<li>"+keys.get(i)+"="+values.get(i)+"</li>");
}
out.print("</ol>");
}
}
配置该标签,标记部分是实现动态标签必须的
<tag>
<name>dynaAttr</name>
<tag-class>com.chinaebi.test.DynaAttributesTag</tag-class>
<body-content>empty</body-content>
<!-- 是否支持动态属性 -->
**<dynamic-attributes>true</dynamic-attributes>**
</tag>
页面的引用,页面开头要加入标签的引用<%@taglib uri="http://www.chinaebi.org/myTaglib" prefix="myTag" %>
标签属性可以任意
<myTag:dynaAttr name="book" url="http://www.baidu.com" 价格="20"/>
效果