如何在Java Web App中创建自定义标签?如何在JSP中使用自定义标签?

时间:2014-07-13 12:24:11

标签: jsp jsp-tags custom-tags

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

<%@ 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示例来创建自定义标签吗?

1 个答案:

答案 0 :(得分: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!!!

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