自定义 JSTL 标签与函数

JSTL 标签可以直接在 jsp 调用方法,也可以自定义新的标签或函数,返回指定值。

需求

分别使用自定义 JSTL 标签和函数在 JSP 页面输出项目 title。

实现

1、引入 jstl 包,maven 写法如下:

<dependency>
    <groupId>javax.servlet.jsp.jstl</groupId>
    <artifactId>jstl-api</artifactId>
    <version>1.2</version>
</dependency>

2、创建自定义标签类 MoreTag,并继承 SimpleTagSupport。

package com.studyandexam.management.tag;

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

public class MoreTag extends SimpleTagSupport {
    @Override
    public void doTag() throws JspException, IOException {
        PageContext pageContext = (PageContext) getJspContext();
        pageContext.getOut().write("在线考试与学习系统");
    }

    public static String getTitle() throws JspException, IOException {
        return "在线考试与学习系统";
    }
}

3、创建对应标签类的 moretag.tld,内容如下:

<?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>migchar 1.2 core library</description>
    <!-- 显示名称 -->
    <display-name>migchar core</display-name>
    <!-- 版本信息 -->
    <tlib-version>1.2</tlib-version>
    <!-- 建议使用的标签的前缀 -->
    <short-name>mc</short-name>
    <!-- 标签的uri -->
    <uri>http://migchar.com/jstl/core</uri>

    <!-- 自定义标签名-->
    <tag>
        <name>mytitle</name>
        <tag-class>com.examstack.management.tag.MoreTag</tag-class>
        <!-- 标签的内容:为空就表示是一个单标签,标签里面没有内容 -->
        <body-content>empty</body-content>
        <example>
        </example>
    </tag>
    <!-- 自定义标签函数名-->
    <function>
        <name>title</name>
        <function-class>com.studyandexam.management.tag.MoreTag</function-class>
        <function-signature>java.lang.String getTitle()</function-signature>
        <example>${mc:title()}</example>
    </function>
</taglib>

4、JSP 页面引用自定义标签

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!-- 引入配置好的自定义标签, uri对应tld中定义的标签<uri>, prefix对应tld中定义的<short-name> -->
<%@ taglib uri="http://migchar.com/jstl/core" prefix="mc" %>
<!doctype html>
<html>
<head>
    <meta http-equiv='Content-Type' content='text/html;charset=utf-8' />
    <title>JSTL自定义标签测试</title>
</head>
<body>

    <%-- 自定义标签 <mc:mytitle /> 在jsp输出title --%>
    <mc:mytitle />
    <%-- 自定义标签函数 ${mc:title()} 在jsp输出title --%>
    ${mc:title()}
    
</body>
</html>

自定义标签函数中,方法必须为 public static 类型。

暂无评论

发送评论 编辑评论


				
上一篇
下一篇