自定义标签(四) 动态属性的应用
ListTag.javapackage tag;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.DynamicAttributes;import javax.servlet.jsp.tagext.TagSupport;/** * @作者 :goby * @创建时间:2009-6-14 上午11:19:47 * @更新时间:$Date$ */public class ListTag extends TagSupport implements DynamicAttributes {public void setName(String name) {this.name = name;}private String name;private HashMap map = new HashMap();@Overridepublic int doStartTag() throws JspException {// TODO Auto-generated method stubJspWriter out = pageContext.getOut();Set list = map.entrySet();try{out.print("<select name='"+name+"'>");Iterator it = list.iterator();while(it.hasNext()){Map.Entry entry = (Map.Entry)it.next();out.print("<option value='");out.print(entry.getKey());out.print("'>");out.print(entry.getValue());out.print("</option>");}out.print("</select>");}catch(Exception ex){ex.printStackTrace();}return super.doStartTag();}public void setDynamicAttribute(String uri, String localname, Object value)throws JspException {// TODO Auto-generated method stubmap.put(localname, value);}}
tag.tld
<?xml version="1.0" encoding="UTF-8"?><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>it315</short-name><uri>/taglib</uri><tag><name>list</name><tag-class>tag.ListTag</tag-class><body-content></body-content><attribute><description>description</description><name>name</name><requried>true</requried></attribute><dynamic-attributes>true</dynamic-attributes></tag></taglib>
index.jsp
<%@ page contentType="text/html; charset=gb2312" %><%@ taglib uri="/taglib" prefix="it315" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>Hello</title> </head> <body> <it315:list name="singer" n1="以及他很" n2="ss"/> </body></html>
页:
[1]