什么是Taglib?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是Taglib?相关的知识,希望对你有一定的参考价值。
一、什么是Taglib?
如果你曾使用JSP页面来作为渲染视图的话,我相信你对JSTL标签库一定不会感到陌生。
比如:
1.forEach代码片段
<c:forEach var="i" begin="1" end="5">
Item <c:out value="${i}"/><p>
</c:forEach>
1
2
3
2.formatNumber 代码片段
<fmt:formatNumber type="number" pattern="###.###E0" value="${balance}" />
1
3.fn:length代码片段
${fn:length(string1)}
1
在我写代码的过程中,以上三种类型的JSTL标签使用频率最高。
它们分别是
核心标签
格式化标签
JSTL函数
JSTL标签库可通过以下方式进行导入。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
1
2
标签库(tag library),是指由在JSP页面中使用的标记所组成的库。JSP容器推出时带有一个小型的、默认的标记库。JSTL是其中一种,最为常用。
二、自定义function
但在实际的应用当中,JSTL并不能完全满足我们的需求,所以我们要能够实时的对其进行扩展。
有这样一种场景。
1.数据库中更新日期的数据格式(bigint型,13位长度。)如下:
`update_date` bigint(13) NOT NULL DEFAULT ‘0‘ COMMENT ‘更新时间‘,
1
2.对应的Java类中的格式(Long )为:
protected Long update_date;
public Long getUpdate_date() {
return update_date;
}
public void setUpdate_date(Long update_date) {
this.update_date = update_date;
}
1
2
3
4
5
6
7
8
3.JSP页面中显示的格式为:
这里写图片描述
这种情况下,JSTL就“黔驴技穷”了,我们需要新增一种function来实现它。
第一步,Java端新建格式化方法
package com.cmower.common.util;
public class DateUtil {
public static final String PATTERN_STANDARD = "yyyy-MM-dd HH:mm:ss";
public static String formatTime(Long time) {
if (time == null) {
return " - ";
}
if (time == 0L) {
return " - ";
}
Date date = new Date(time);
SimpleDateFormat formatter = new SimpleDateFormat(PATTERN_STANDARD);
return formatter.format(date);
www.wmyld11.cn
www.88qusheng.cn
www.yiqianou.cn
第二步,把formatTime方法的使用权限传递给JSP页面
首先,新建fns.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/www.xbylpt5.cn xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0">
<description>server function library</description>
<tlib-version>1.0</tlib-version>
<short-name>fns</short-name>
<uri>http://localhost/fns</uri>
<function>
<description>转码long型日期值</description>
<name>formatTime</name>
<function-class>com.cmower.common.util.DateUtil</function-class>
<function-signature>java.lang.String formatTime(java.lang.Long)</function-signature>
<example>${fns:formatTime(long)}</example>
</function>
</taglib>
18
<short-name>fns</short-name>定义该taglib的前缀为fns;
<name>formatTime</name>定义该taglib的function名为formatTime;
<function-class>com.cmower.common.util.DateUtil</function-class>function的类名;
<function-signature>java.lang.String formatTime(java.lang.Long)</function-signature>function关联Java端的方法名。
然后,我需要把该自定义标签库导入到对应的JSP页面中:
<%@ taglib prefix="fns" uri="/WEB-INF/www.wanuoyl88.cn tlds/fns.tld" %>
1
通过以下代码调用它:
${fns:formatTime(update_date www.lgzxyl.com)}
1
通过以上步骤就能够完成自定义Taglib了,小技能,大功效。
以上是关于什么是Taglib?的主要内容,如果未能解决你的问题,请参考以下文章