Tag file

Posted 0820ll

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tag file相关的知识,希望对你有一定的参考价值。

JSP 2.0 引入 Tag file ,tag file 以 tag 或 tagx 为后缀,它们可以包含其他资源文件;一个被其他文件包含的 tag file 应该以 tagf 为后缀。

如同JSP页面被翻译成 Servlet 一样,JSP容器提供多种方式将 tag file 编译成 Java 的标签处理类。例如 Tomcat 将 tag file 翻译成继承与 javax.servlet.jsp.tagext.Simpletag 接口的标签处理类。

一个 Tag file 和 JSP 页面一样,拥有指令、脚本、EL表达式、动作元素、自定义的标签。

Tag file 从两方面简化了自定义标签的开发:

1)tag file 无需提前翻译,直到第一次被调用才会编译
2)不再需要标签库描述文件,使用 tag file 的方式,tag file 的文件名和标签名称(不包含后缀)相同。

tag file必须放在应用路径的 WEB-INF/tags 目录下才能生效。

tag file 中也有一些隐藏对象,通过脚本或者EL表达式可以访问这些隐藏对象。

request     // javax.sevlet.http.HttpServletRequest
response    // javax.servlet.http.HttpServletResponse
out         // javax.servlet.jsp.JspWriter
contig      // javax.servlet.ServletContig
session     // javax.servlet.http.HttpSession
application // javax.servlet.ServletContext
jspContext  // javax.servlet.jsp.JspContext

使用 tag file 的例子

 在应用项目的 WEB-INF 下新建 tags 目录,然后再 tags 目录下新建 tag file

技术分享图片

<%-- firstTag.tag --%>
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ tag import="java.util.Date" import="java.text.DateFormat" %>

<%
    DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG);
    Date now = new Date(System.currentTimeMillis());
    out.println(dateFormat.format(now));
%>

在 JSP 页面中使用 tag file

<%-- firstTagtest.jsp --%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="easy" %>  <!-- 使用tagdir属性 -->

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Test tag file</title>
</head>
<body>
    Today is <easy:firstTag />  <!-- 标签名和tag file名相同 -->
</body>
</html>

测试

技术分享图片

Tag file 中的指令

和 JSP 页面一样,tag file 可以使用指令来指挥 JSP容器如何编译这个 tag file,tag file 的指令语法和 JSP是一样的

<%@ 指令名称 属性=“属性值” 属性=“属性值” %>
tag  <!-- 与JSP中的page指令作用相同 -->
taglib  <!-- 用于引入自定义标签库到 tag file 中 -->
include   <!-- 用于将其他资源导入 tag file 中 -->
attribute  <!--  -->
variable   <!-- -->

tag 指令 <%@ tag 属性=“属性值” ... %>

display-name
body-name
dynamic-attributes
small-icon
large-icon
description
example
language
import
pageEncoding

taglib 指令  <%@ taglib uri=‘‘tagLibraryURL" prefix="tagPrefix"%>

tag file 中的taglib 指令和JSP页面中的taglib 指令是一样的。

include 指令 <%@ include file=“文件相对 uri 地址” %>

tag file 中的include指令和JSP中的include指令是一样的。

attribute 指令 <%@ attribute 属性=“属性值” %>

用于设定 tag file 中标签的属性,将值从JSP页面中传递到tag file中。其和标签库描述文件中的atttribute元素等效

name
required
fragment
rtexprvalue
type
description

variable 指令 <%@ variable 属性=“属性值” %>

将 tag file 中的一些值传递到JSP页面中,用于定义那些需要传递到JSP页面的变量

name-given
name-from-attribute
alias
varialbe-class
declare
scope
description

 

以上是关于Tag file的主要内容,如果未能解决你的问题,请参考以下文章

Operator '||' cannot be applied to operands of type 'bool?' and 'bool?'(代码片段

PHP常用代码片段

这些 C++ 代码片段有啥作用?

inclusion_tag 重复页面加载显示模板

如何使用 file_file_tag 上传文件?

form_tag:在 params[] 中保留许多 text_filed_tag 的值