自定义标签的使用需要四步:
第一、编写用于实现功能的.java 文件。
第二、编写该 .java 文件对应的 .tdl文件。
第三、在web.xml中添加你自定义的标签
第四、在页面的头中,引入,然后在页面中使用。
举例:以List标签为例
第一、编写用于实现功能的.java 文件。
package com.gwssi.wssl.taglib;
import java.util.*;
import javax.servlet.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import org.jdom.*;
public class ListTag extends BodyTagSupport {
StringBuffer results = new StringBuffer();
private String key;
public void setKey(String key) {
this.key = key;
}
public String getKey() {
return key;
}
public ListTag() {
}
public int doStartTag() throws JspException {
return EVAL_BODY_BUFFERED;
}
public int doEndTag() throws JspException {
//获得请求对象
ServletRequest request = pageContext.getRequest();
//从请求对象中获得元素对象
Element e = (Element) request.getAttribute(key);
if (e != null) {
//从元素对象中获得子对象集
String other=e.getAttributeValue("other");
List children = e.getChildren();
Iterator iterator = children.iterator();
while (iterator.hasNext()) {
Element row = (Element) iterator.next();
List attributes = row.getAttributes();
Iterator it = attributes.iterator();
results.append("<tr>");
while (it.hasNext()) {
Attribute attributename = (Attribute) it.next();
String attributevalue = attributename.getValue();
results.append("<td ");
results.append(other);
results.append(">");
results.append(attributevalue);
results.append("</td>");
}
results.append("</tr>");
}
}
try {
pageContext.getOut().println(results);
} catch (Exception ex) {
System.out.println(new Date().getTime());
ex.printStackTrace();
}
return super.doEndTag();
}
public int doAfterBody() throws JspException {
return SKIP_BODY;
}
public void release() {
bodyContent = null;
super.release();
}
}
第二、编写该 .java 文件对应的 .tdl文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>saic</shortname>
<uri>http://jakarta.apache.org/struts/tags-template</uri>
<tag>
<name>list</name>
<tagclass>com.gwssi.wssl.taglib.ListTag</tagclass>
<bodycontent>JSP</bodycontent>
<attribute>
<name>key</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
第三、在web.xml中添加你自定义的标签 (wssl 但实际中却没有这个……)
<taglib>
<taglib-uri>/WEB-INF/saic.tld</taglib-uri>
<taglib-location>/WEB-INF/saic.tld</taglib-location>
</taglib>
第四、在页面的头中,引入,然后在页面中使用。
<%@taglib uri="/WEB-INF/saic.tld" prefix="saic" %>
使用:<saic:list>……</saic:list>