标签:
自定义Tag标签,继承SimpleTagSupport实现,位于javax.servlet.jsp.tagext
Maven dependency
<dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> </dependency>
实际场景很少使用,主要学习java实现自定义标签的思想
执行自定义标签中内容代码位于doTag方法内
而SimpleTageSupport类具有一些方法:
JspContext getJspContext()
JspContext通过方法 getOut(),获得JspWriter。JspWriter的print()方法可以将内容写入到Jsp页面中。
JspContext通过getAttribute() setAttribute()设置获取JspTag作用域或其他作用域的Attribute值。
JspTag getParent(),可以通过该方法获得父标签内容。通过获取父标签和子标签内容可以组合出各种复杂功能的Jsp Tag。如If While 的分支选择Tag。
JspFragment getJspBody(), 获得标签体。JspFragment.invoke(Writer writer), 将标签内容写入Writer。如果writer为null, 标签体内容如普通jsp页面输出。
需先定义tld文件
<?xml version="1.0" encoding="GBK" ?> <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>mytaglib</short-name> <uri>http://domain/mytaglib</uri> <tag> <name>helloWorld</name> <tag-class>mypackage.HelloWorldTag</tag-class> <body-content>empty</body-content> <attribute> <name>content</name> <required>true</required> <fragment>true</fragment> </attribute> </tag> <tag> <name>iterator</name> <tag-class>mypackage.iteratorTag</tag-class> <body-content>scriptless</body-content> <attribute> <name>collection</name> <required>true</required> <fragment>true</fragment> </attribute> <attribute> <name>item</name> <required>true</required> <fragment>true</fragment> </attribute> </tag>
是用前使用TagLib指令导入
<%@ taglib uri="WEB-INF/tlds/mytag.tld" prefix="mytag" %>
标签:
原文地址:http://www.cnblogs.com/doubleten/p/4249002.html