寫一個小項目時遇到須要將一個長字符串轉成小段加點點點的形式顯示,立刻想到了定義一個自定義函數java
package cn.harmel.common.util; /** * 操做字符串的工具類 * * @author Harmel * */ public final class StringUtils { private StringUtils() { } public static String transform(String str, int length) { if (str.length() > length) { return str.substring(0, length) + "..."; } return str; } }
按照慣例,須要在/WEB-INF下的任意目錄(tags除外)定義一個tld文件,我定義在/WEB-INF/tag裏web
<?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>harmel's tag</description> <tlib-version>1.0</tlib-version> <short-name>h</short-name> <uri>http://www.harmel.cn/tag</uri> <function> <name>subStr</name> <function-class>cn.harmel.common.util.StringUtils</function-class> <function-signature>java.lang.String transform(java.lang.String, int)</function-signature> </function> </taglib>
大功告成,立刻在JSP頁面中導入標籤使用jsp
<%@ taglib prefix="h" uri="http://www.harmel.cn/tag" %> ${h:subStr("123456789012345", 10)}
測試經過接着把該函數用到了其餘頁面中,修改了文件Eclipse立馬build workspace後發如今/WEB-INF下的JSP頁面上面都有個大紅叉叉,而其/WEB-INF外的JSP頁面卻沒有。提示說the function h:subStr is undefined可是部署運行卻沒有問題。如今的Tomcat容器已經能夠自動搜索/WEB-INF下的tld了,想一想多是Eclipse不夠智能爲了解決強迫症只好在web.xml中給出了標籤訂義:函數
<jsp-config> <taglib> <taglib-uri>http://www.harmel.cn/tag</taglib-uri> <taglib-location>/WEB-INF/tag/harmel.tld</taglib-location> </taglib> </jsp-config>
成功將強迫症解決掉
工具