Java_JSP2_如何使用动态标签?

来源:互联网 发布:怎么查询本机端口 编辑:程序博客网 时间:2024/05/07 02:28

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

动态属性标签相对普通标签的额外要求
 (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>();@Overridepublic 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>");}@Overridepublic 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
原创粉丝点击