说明:本博文有借鉴与另外一边文章,但是结合公司碰到的项目做一个总结,方便以后使用查看。
借鉴的文章:http://blog.csdn.net/alan_liuyue/article/details/71129046
一、tld说明
tld,是taglib description 的缩写,其自定义标签一般用于jsp页面,tld其作用一般是在web项目中结合jstl、c标签等,用于有效性判断、权限判断等方面,对前端的一些页面标签起到约束、限制的作用。
很多人只知道有这类型的标签,但不知道它有什么作用以及怎么去使用,所以,学会使用tld自定义标签对项目会有很大的帮助,下面我会以一个自写的结合项目使用的demo来详细说明如何去使用tld,进行自定义标签,做有效性的判断。
案例说明:
1.项目结构
2. tld自定义标签方法,需要以下几个步骤:
(1).在WEB-INF下新建一个tld文件,然后在tld文件写入以下代码:
<?xml version="1.0" encoding="UTF-8"?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <description>JSTL 1.1 functions library</description> <display-name>JSTL functions cms</display-name> <tlib-version>1.1</tlib-version> <short-name>fnc</short-name><!-- 定义标签使用的短名称 --> <uri>http://java.sun.com/jsp/jstl/functionsc</uri> <!-- 自定义标签的形参都是域里面传递的参数值;自定义标签基本使用在jsp页面上 --> <function> <description>获得栏目列表</description><!-- 对该标签的说明 --> <name>getCategoryListByIds</name><!-- 定义标签名,放在短标签之后 --> <!-- 标签处理域值的类路径 --> <function-class>com.openeap.modules.cms.utils.CmsUtils</function-class> <!-- 标签处理域值的具体的类方法 --> <function-signature>java.util.List getCategoryListByIds(java.lang.String)</function-signature> <!-- 自定义标签的使用示范 ,域参数会自动传递到具体的方法里面--> <example>${fnc:getCategoryListByIds(categoryIds)}</example> </function> </taglib>
每一个定义的参数都已经附有说明,基本都是可以自行修改的,而自定义标签的处理域值的类路径和方法需要和对应的项目的路径和方法相一致
(2).在后台标签处理类添加方法
/** * 获取栏目 * * @param ids 栏目编号 * @return */ public static List<Category> getCategoryListByIds(String categoryIds) { return categoryService.findByIds(categoryIds); }
(3).在前台jsp页面引用自定义标签
<c:forEach items="${fnc:getCategoryListByIds(category.parentIds)}" var="category"> <c:if test="${category.id ne 1}"><li><a href="${ctx}/list-${category.id}${urlSuffix}">${category.name}</a><span class="divider">/</span></li></c:if> </c:forEach><li class="active">${category.name}</li>
使用自定义标签获取到分类表,在前台进行遍历处理
三、结语
tld自定义标签在很多的项目中都能被有效地用于前端的全局的权限或者有效性等的判断,极大加快了项目的开发进度,相信很多程序员都感同身受,因为只需要稍微修改一下处理域值的方法就能很好地控制html或js标签的使用;