专栏首页咸鱼不闲Java自定义标签

Java自定义标签

标签能干什么?

1.循环
2.修改(可以用于格式化时间)
3.判断(相当于if else)

jsp标签规范分为

1. 1.0时代(继承TagSupport(传统,复杂))
2. 2.0时代(继承SimpleTagSupport(新生代,简单))  

步骤

1.创建标签库类
2.创建标签库文件
3.页面引入

下面就拿2.0规范,格式化时间功能实例举个栗子: 1.创建标签库类 (继承SimpleTagSupport,实现doTag()即可)

public class DateTag extends SimpleTagSupport   {
    private String date;
    public void setDate(String date) {
        this.date = date;
    }
    @Override
    public void doTag() throws JspException, IOException {
        SimpleDateFormat sdf1= new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
        SimpleDateFormat sdf2= new SimpleDateFormat("yyyy-MM-dd");
        String result = "";
        try {
            result =sdf2.format(sdf1.parse(date));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        getJspContext().getOut().write(result);
    }
}

2.创建标签库文件(在WEB-INF)下面,以tld为后缀。<short-name>内填标签库类的路径<name>在页面上用到。<rtexprvalue>表示可以支持EL表达式

<?xml version="1.0" encoding="ISO-8859-1"?>
<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">
    <tlib-version>1.0</tlib-version>
    <short-name>myshortname</short-name>
    <uri>https://segmentfault.com/u/mshu</uri>
    <tag>
        <name>DateFormat</name>
        <tag-class>tag.DateTag</tag-class>
        <body-content>scriptless</body-content>
        <attribute>
            <name>date</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
</taglib>

3.页面引入(或者也可以在web.xml中引入)

<%@ taglib prefix="ex" uri="/WEB-INF/tld/date.tld"%>
<ex:DateFormat date="${item.birthdate}"/>   

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • checkbox 和 radio 和 select 的使用

    这样凡是设置name属性为Country的将变成单选,name为city的是多选。那么如何获得被选中的元素呢?

    Mshu
  • 简单才是美! SpringBoot+JPA

    SpringBoot 急速构建项目,真的是用了才知道,搭配JPA作为持久层,一简到底! 下面记录项目的搭建,后续会添加NOSQL redis,搜索引擎elast...

    Mshu
  • post和get的区别,面试经常被问到!(二)

    Mshu
  • 从0到1搭建完整的javaweb项目(超详细)

    本案例使用Servlet+jsp制作,用MyEclipse和Mysql数据库进行搭建,详细介绍了搭建过程及知识点。

    程序IT圈
  • 亲,您的json键值对用双引号了吗? 转

    JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。 那么,JSON到底是什么...

    donghui
  • 案例:python中实现51备忘录

    1.添加Memo类,至少包含id,name,thing,date四个属性,date可以暂时使用字符串表示,比如‘1.2’,‘3.8’,暂时不用考虑时间相关模块

    py3study
  • 文件解析中间件,用SQL去读取各种格式的文件! 顶

    (1)完全支持MySql协议 (2)完全支持Mybatis-Generator (3)支持Schema和Table (4)支持客户端创建Schema和Ta...

    无毁的湖光-Al
  • Leetcode 172 Factorial Trailing Zeroes

    Given an integer n, return the number of trailing zeroes in n!. Note: Your sol...

    triplebee
  • django框架使用mysql步骤

    注意:首先在mysql中手动或者通过命令创建一个数据库,我先创建一个名为orm的数据库。

    py3study
  • jacoco测试覆盖率过滤非业务类

    之前在做接口测试代码覆盖率(jacoco)方案的时候,漏了一些东西,这篇文章补一下。做使用jacoco做接口代码覆盖率测试的过程中,遇到一个问题:测试报告里面信...

    FunTester

扫码关注云+社区

领取腾讯云代金券