1

我想创建自己的标签,例如

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:out value="helloWorld" />

<c:forEach var="song" items="${applicationScope.songs}">
    <c:out value="song" />
</c:forEach>

您能否举一个创建自定义标签的 Hello World 示例?

4

1 回答 1

1

好没问题..

首先创建一个.tld 文件并将其放在WEB-INF目录下或WEB-INF 目录下的一个目录,我们称之为mytags.tld。

以及文件的内容:

<?xml version="1.0" encoding="UTF-8" ?>

<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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
        version="2.0">

    <description>My Tags.. My Own Tags..</description>
    <display-name>My Tags Display Name Here.</display-name>
    <tlib-version>1</tlib-version>
    <short-name>mytags</short-name>
    <uri>http://koraytugay.com/mytags</uri>

    <tag>
        <description>Some random tag by me</description>
        <name>myFirstTag</name>
        <tag-class>com.tugay.julyten.MyTagClass</tag-class>
        <body-content>empty</body-content>
    </tag>

</taglib> 

好吧,这里最重要的元素是uri和我猜标签元素中的所有内容..

部署应用程序时,容器将查找 .tld 文件,因此您无需将其放在 web.xml 或任何内容中。(这对 JSP 2.0 及更高版本有效。)

好的,现在让我们在 com.tugay.julyten 包中创建 MyTagClass.java

package com.tugay.julyten;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;

public class MyTagClass extends SimpleTagSupport {
    @Override
    public void doTag() throws JspException, IOException {
        getJspContext().getOut().write("You are awesome man! Awesome!!!");
    }
}

请注意,我们的类扩展了 SimpleTagSupport 并且我们已经覆盖了方法 doTag() 并实现了它。终于是时候在我们的 jsp 文件中使用它了:

<%@ taglib prefix="mine" uri="http://koraytugay.com/mytags" %>
<mine:myFirstTag />

你去吧。当你点击 jsp 文件时,你会看到:

You are awesome man! Awesome!!!

希望这可以帮助您开始使用自定义标签..

于 2014-07-13T12:29:51.310 回答