package com.ceshi; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.*; public class TestTag extends SimpleTagSupport { private String outerTagName="p"; public String getOuterTagName() { return outerTagName; } public void setOuterTagName(String outerTagName) { this.outerTagName = outerTagName; } private int count; public int getCount() { return count; } public void setCount(int count) { this.count = count; } @Override public void doTag() throws JspException, IOException { JspFragment jsp=this.getJspBody(); this.getJspContext().getOut().write("<"+outerTagName+">"); for(int i=0; i<count;i++){ jsp.invoke(null); } this.getJspContext().getOut().write("</"+outerTagName+">"); } }
<?xml version="1.0" encoding="UTF-8"?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <description>JSTL 1.1 core library</description> <display-name>JSTL core</display-name> <tlib-version>1.1</tlib-version> <short-name>m</short-name> <uri>http://www.baidu.com/myjstl</uri> <tag> <description> </description> <name>show</name> <tag-class>com.ceshi.TestTag</tag-class> <body-content>scriptless</body-content> <attribute> <description> Name of the exported scoped variable for the exception thrown from a nested action. The type of the scoped variable is the type of the exception thrown. </description> <name>outerTagName</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <description> Name of the exported scoped variable for the exception thrown from a nested action. The type of the scoped variable is the type of the exception thrown. </description> <name>count</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> </tag> </taglib>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@taglib prefix="m" uri="http://www.baidu.com/myjstl" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <m:show outerTagName="h4" count="2"> hahahha<br> </m:show> </body> </html>
实现效果如下: