在jsp文件中,可以引用 tag 和tld 文件,本文主要针对 tag
对于tag 文件
1)将此类文件放在 WEB-INF 下,比如 /WEB-INF/tags,tags 是目录,其下可以有多个.tag文件,如 tree.tag,menu.tag
2)在jsp 中使用 <%@ taglib prefix="sys" tagdir="/WEB-INF/tags" %> 来引入
3)在jsp 页面上,采用<sys:xxx> 来使用该 tag 文件,如 <sys:tree>、<sys:menu>
tag 文件的作用一般是一段小代码,类似 include 文件的作用
例:
1、引入 tag 文件
<%@ taglib prefix="sys" tagdir="/WEB-INF/tags/sys" %>
2、在 /WEB-INF/tags/sys 下,新增一个 test.tag 文件
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ attribute name="id" type="java.lang.String" required="true" description="编号"%>
<%@ attribute name="name" type="java.lang.String" required="true" description="输入框名称"%>
<%@ attribute name="value" type="java.lang.String" required="true" description="输入框值"%>
<%@ attribute name="notAllowSelectParent" type="java.lang.Boolean" required="false" description="不允许选择父节点"%>
<i id="${id}Icon" class="icon-${not empty value?value:' hide'}"></i> <label id="${id}IconLabel">${not empty value?value:'无'}</label>
<input id="${id}" name="${name}" type="hidden" value="${value}"/><a id="${id}Button" href="javascript:" class="btn">选择</a>
<script type="text/javascript">
$("#${id}Button").click(function(){
//<c:if test="${notAllowSelectParent}">
alert("不能选择父节点");
//</c:if>
});
</script>
3、在jsp 中使用该 tag
<sys:test name="test" value="test" id="test" notAllowSelectParent="true"></sys:test>
4、运行程序,可以发现程序正常运行
问题是:tag 中的 //<c:if test="${notAllowSelectParent}"> 不是被注释掉了吗?为什么还是能正常运行? 为什么js 中可以使用 jstl 标签?
实际运行结果:与注释没有任何关系……