自定义JSTL标签

来源:互联网 发布:透明头像生成软件 编辑:程序博客网 时间:2024/06/07 20:07

自定义JSTL标签


说明:

本文采用SSM框架环境进行测试自定义标签

1、编写自定义标签类

本文示例采用最简单的功能–“获取当前时间”为例
在项目的utils目录下新建工具类:MyTagToNowTime.java

package com.familylife.ssm.utils;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.Tag;import javax.servlet.jsp.tagext.TagSupport;import java.io.IOException;import java.util.Date;public class MyTagToNowTime extends TagSupport {    @Override    public int doStartTag() throws JspException {        java.text.SimpleDateFormat formater = new java.text.SimpleDateFormat("yyyy-MM-dd");        String nowDate = formater.format(new Date());        JspWriter out  = pageContext.getOut();        try{            out.print(nowDate);        }catch (IOException e){            e.printStackTrace();        }        return Tag.SKIP_BODY;    }}

2、定义tld文件

在项目的WEB-INF下创建mytag文件夹。在新创建的mytag目录下新建tld文件,并命名为:DateTagLib.tld
编辑tld文件内容:

<?xml version="1.0" encoding="ISO-8859-1"?><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>自定义标签Demo</description>    <tlib-version>1.0</tlib-version>    <short-name>displayDate</short-name>    <uri>/WEB-INF/mytag/DateTaglib.tld</uri>    <tag>        <name>displayDate</name>        <tag-class>com.familylife.ssm.utils.MyTagToNowTime</tag-class>        <body-content>empty</body-content>    </tag></taglib>

说明:

1、tld文件内的内容可以参考tomcat路径下\webapps\examples\WEB-INF\jsp2 下的文件,这里的文件是tomcat关于自定义标签的示例文件。尤其是taglib标签的配置信息可以摘抄,这样可以更准确的与tomcat进行匹配,以免在自作标签完毕后出现版本不匹配的问题。
2、我们在WEB-INF下创建存放tld文件的目录,该文件夹的名称不可以为tags、lib,否则会报错:Invalid tld file: [/WEB-INF/tags/DateTaglib.tld], see JSP specification section 7.3.1 for more details
这里写图片描述

3、JSP页面动态引入:

在jsp页面中引入此标签:

<%@ taglib prefix="my" uri="/WEB-INF/mytag/DateTaglib.tld" %>

使用此标签:

<my:displayDate/>