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?'(代码片段