MyTag.java
package taglib;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.io.IOException;
public class MyTag extends TagSupport
{
private int counter = 0;
private String[] names = null;
public int doStartTag()
{
names = (String[]) pageContext.getAttribute("names");
return EVAL_BODY_INCLUDE;
}
public int doAfterBody() throws JspException
{
try{
pageContext.getOut().print(" " + names[counter] + "<BR>");
} catch(Exception e){
throw new JspException(e.toString());
}
counter++;
if(counter >= names.length) {
return SKIP_BODY;
}
return EVAL_BODY_AGAIN;
}
}
MyTag.tld
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE taglib PUBLIC
"-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>TagExamples</short-name>
<description>Example tags.</description>
<tag>
<name>iterator</name>
<tag-class>taglib.MyTag</tag-class>
</tag>
</taglib>
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<description>
Example web application illustrating the use of tags in the
"request" custom tag library, from the JAKARTA-TAGLIBS project.
</description>
<taglib>
<taglib-uri>http://java2s.com/taglibs</taglib-uri>
<taglib-location>/WEB-INF/MyTag.tld</taglib-location>
</taglib>
<security-role>
<role-name>admin</role-name>
</security-role>
</web-app>
Jsp page with custom tag
<%@ taglib prefix="l" uri="WEB-INF/MyTag.tld" %>
<HTML>
<HEAD>
<TITLE>Supporting Iterating Custom Tags</TITLE>
</HEAD>
<BODY>
<H1>Supporting Iterating Custom Tags</H1>
<%
String[] names = new String[]{ "A", "B", "C", "D" };
pageContext.setAttribute("names", names);
%>
<l:iterator>
Cast member:
</l:iterator>
</BODY>
</HTML>
Download: CustomTagForIteration.zip( 135 k)