Tag File 是自定义标签的简化用法,使用TagFile可以无须定义标签库和标签文件,但仍然可以在JSP页面中使用自定义标签。
学习Tag File需要子解Tag File扔命名,它的命名必须遵守如下的规则:tagName.tag。即 Tag File的主文件名就是标签名,文件名后缀必须是tag。而且,将文件存放在Web应用的某个路径下,这个路径相当于标签库的URL名。例如放在/WEB-INF/tags下,即标签库的路径为/WEB-INF/tags.
Tag File具有5个编译指令,如下:
(1). taglib:作用与JSP文件中的taglib指令效果相同,用于导入其他标签库
(2). include:作用与JSP文件中的include指令效果相同,用于导入其他JSP或静态页面
(3). tag:作用类似于JSP文件中的page指令,有pageEncoding、body-content等属性,用于设置页面代码等属性。
(4). attribute:用于设置自定义标签的属性,类似于自定义标签类中处理的标签属性。
(5). variable:用于设置自定义标签的变量,这些变量将传给标签属性。
下面我们定义个迭代器的标签Tag File,名称为:iterator.tag
<%@ tag pageEncoding="GBK" import="java.util.List"%> <!-- 定义了四个标签属性 --> <%@ attribute name="bgColor" %> <%@ attribute name="cellColor" %> <%@ attribute name="title" %> <%@ attribute name="bean" %> <table border="1" bgcolor="${bgColor}"> <tr> <td><b>${title}</b></td> </tr> <%List<String> list = (List<String>) request.getAttribute("a"); // 遍历输出list集合的元素 for (Object ele : list){%> <tr> <td bgcolor="${cellColor}"> <%=ele%> </td> </tr> <%}%> </table>
使用自定义标签的格式如:
<% @ tablib prefix=”tagPrefix” tagdir=”path”%>
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@ page import="java.util.*" %> <%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>迭代器tag file</title> <meta name="website" content="http://www.linjw.org" /> </head> <body> <h2>迭代器tag file</h2> <% // 创建集合对象,用于测试Tag File所定义的标签 List<String> a = new ArrayList<String>(); a.add("疯狂Java讲义"); a.add("轻量级Java EE企业应用实战"); a.add("疯狂Ajax讲义"); // 将集合对象放入页面范围 request.setAttribute("a" , a); %> <h3>使用自定义标签</h3> <tags:iterator bgColor="#99dd99" cellColor="#9999cc" title="迭代器标签" bean="a" /> </body> </html>