标签的动态属性练习---DynamicAttributes

WEB-INF\src\DynamicAttributeTag.java

package sadhu;
import javax.servlet.jsp.tagext.*;
import java.util.*;
import java.io.*;
import javax.servlet.jsp.*;

/**
*动态属性标签处理类
实现:DynamicAttributes接口
*/
public class DynamicAttributeTag 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>");
		}
	}
	//设置动态属性
	@Override
	public void setDynamicAttribute(String url,String localName,Object value)throws JspException
	{
		keys.add(localName);
		values.add(value);
	}
}

javac命令编译到WEB-INF\classes目录中

WEB-INF\tld\jsp2-taglib.tld

<?xml version="1.0" encoding="UTF8" ?>
<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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
    <!-- 标签描述 -->
    <description>自定义标签库</description>
    <!-- 标签版本 -->
    <tlib-version>1.0</tlib-version>
    <!-- 标签短名字 -->
    <short-name>myTaglib</short-name>
    <!-- 标签库的唯一标识 -->
    <uri>http://www.sadhu.com/jsp2-taglib</uri>
    <tag>
	<!-- 标签名字 -->
	<name>myTag</name>
	<!-- 处理类 -->
	<tag-class>sadhu.DynamicAttributeTag</tag-class>
	<!-- 标签的内容体 -->
	<body-content>empty</body-content>
	<!-- 指定支持动态属性 -->
	<dynamic-attributes>true</dynamic-attributes>
    </tag>
</taglib>

配置好后重启tomcat

index.jsp

<%@ page contentType="text/html;charset=GBK" language="java" %>
<%@ taglib uri="http://www.sadhu.com/jsp2-taglib" prefix="mytag" %>

<html>
	<head>
		<title>动态属性标签的练习</title>
	</head>
	<body>
		<mytag:myTag name="sadhu" url="sadhu.com" />
	</body>
</html>

输出:

  1. name=sadhu

  2. url=sadhu.com


你可能感兴趣的:(标签的动态属性练习---DynamicAttributes)