jsp自定义标签 之 直接写tag文件实现

2021-01-03

        前面说的是继承TagSupport类实现一个自定义标签,这一篇将介绍一个更加简单的方法来实现自定义标签。只用一步就完成了,---------------------------------写tag文件:        打开你的web项目,然后在WEB-INFO目录下建一个.tag的文件[此文件就是你要自定义什么标签就在此处写]。可以根据需要写多个.tag文件,一下任然与前面一个自定义标签的例子(http://www.360doc.com/showWeb/0/0/251151414.aspx)实现的功能相似,一个自定义的下拉列表(列表中的项来自数据库)=》(其中用到一些jstl标签)---------------------------dropdownlist.tag----------------------------------------------------<%@ tag pageEncoding="UTF-8"%><!--注意:下面的attribute是我们自定义标签的属性(是根据需要定义的),如下所示给此标签定义了三个属性,即=>[category/selectedValue/displaySelectAll]name:属性的名称type:属性类型required:该属性是否为必须的--><%@ attribute name="category" type="java.lang.String" required="true"  %><%@ attribute name="selectedValue" type="java.lang.String" required="false"  %><%@ attribute name="displaySelectAll" type="java.lang.Boolean" required="false"  %><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><select name="${name}"> <c:choose>                 <c:when test="${empty displaySelectAll or displaySelectAll}">                               <option value="">--Please Select--</option>                 </c:when> </c:choose><!--保存在application中的Map--> <c:forEach items="${dataMap[category]}" var="op">                 <c:choose>                                <c:when test="${not empty selectedValue and selectedValue==op.dictValue}">                                              <option value="${op.dictValue }" selected="selected">${op.displayName}</option>                                 </c:when>                                <c:otherwise>                                               <option value="${op.dictValue }">${op.displayName}</option>                                </c:otherwise>                 </c:choose> </c:forEach></select> 这样,一个自定义标签就写完了(只需要一个.tag的文件),在jsp中使用的时候,就直接把该tag文件导入到里面就行了,如下,一个Test.jsp,<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!--引用WEB-INF文件夹下的dropdownlist.tag文件,此处不用定位到.tag文件,只需指定它所在的文件夹即可--><%@ taglib prefix="dict" tagdir="/WEB-INF" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body> Hello  <p><!--使用自定义标签--> <dict:dropdownlist name="xxx" category="STATUS" displaySelectAll="true"></dict:dropdownlist> </p></body></html> 运行即可看到一个下拉框出来,数据来自数据库表,完成!!!

图片