Jsp自定义Tag

自定义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" %>

 

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。