日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

自定义EL函数解决JSTL标签不足之处——按字节长度截取字符串

發(fā)布時間:2023/12/18 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自定义EL函数解决JSTL标签不足之处——按字节长度截取字符串 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?題外話:做過大型網站前臺的Web開發(fā)程序員最頭疼的事情就是前臺首頁的布局,這其中最最頭疼的就是標題字符的截取的問題,雖然有fn:substring,但表現(xiàn)率以及對中文的支持均不夠完善,其實最終還是歸結為客戶要求太高了,不過做事情就應該嚴謹嘛,尤其干我們這一行。。在我們老大的指點下,了解了如何自定義EL函數(shù),哈哈,今天實現(xiàn)了它。

開發(fā)步驟:

1、 添加實現(xiàn)靜態(tài)方法

/** * @author X.Ing's Blog */ public class StringUtils { /** * @param str: * source string * @param width: * string's byte width * @param ellipsis: * a string added to abbreviate string bottom * @return String Object * @author X.Ing's Blog * @see <a href="http://blog.csdn.net/xxd851116/" mce_href="http://blog.csdn.net/xxd851116/">X.Ing's Blog</a> */ public static String abbreviate(String str, int width, String ellipsis) { if (str == null || "".equals(str)) { return ""; } int d = 0; // byte length int n = 0; // char length for (; n < str.length(); n++) { d = (int) str.charAt(n) > 256 ? d + 2 : d + 1; if (d > width) { break; } } if (d > width) { n = n - ellipsis.length() / 2; return str.substring(0, n > 0 ? n : 0) + ellipsis; } return str = str.substring(0, n); } }

2、 添加標簽庫描述符tld文件(Tag Library Descriptor),在其中注冊該靜態(tài)方法

<?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 web-jsptaglibrary_2_0.xsd" version="2.0"> <description>StringUtils</description> <tlib-version>1.0</tlib-version> <short-name>StringUtils</short-name> <uri>http://blog.csdn.net/xxd851116</uri> <function> <description>StringUtils</description> <name>abbreviate</name> <function-class>com.xxd.utils.StringUtils</function-class> <function-signature>java.lang.String abbreviate(java.lang.String, int, java.lang.String)</function-signature> </function> </taglib>

3、 在JSP頁面導入標簽庫(不用再Web.xml中說明tld的位置,servlet容器可自動搜索tld文件,因此可打包成jar文件)

<%@taglib uri="http://blog.csdn.net/xxd851116" prefix="fnx" %>

注意:

(1) 此處的uri和tld文件中的uri必須相一致,這個不用說明吧?哈哈。

(2) prefix是函數(shù)使用前綴。

4、 頁面使用,超級簡單!

${fnx:abbreviate('要截取的源字符串', '字節(jié)長度', '尾部追加字符')}

5、 測試結果

【代碼】

<body> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 0, '')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 1, '')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 2, '')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 3, '')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 4, '')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 5, '')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 6, '')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 7, '')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 8, '')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 9, '')} <br /> <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 0, '...')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 1, '...')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 2, '...')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 3, '...')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 4, '...')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 5, '...')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 6, '...')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 7, '...')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 8, '...')} <br /> ${fnx:abbreviate('a我b是c,中d國e人f', 2 * 9, '...')} <br /> </body>

【結果】

a
a我b
a我b是
a我b是c
a我b是c,
a我b是c,中d
a我b是c,中d國
a我b是c,中d國e
a我b是c,中d國e人f

...
...
a我...
a我b...
a我b是...
a我b是c...
a我b是c,中...
a我b是c,中d...
a我b是c,中d國...
a我b是c,中d國e人f

?

【源碼下載】:http://download.csdn.net/source/1618386

?

文章原創(chuàng),轉載請注明出處:http://blog.csdn.net/xxd851116

轉載于:https://www.cnblogs.com/xingxiudong/archive/2009/08/30/3987060.html

總結

以上是生活随笔為你收集整理的自定义EL函数解决JSTL标签不足之处——按字节长度截取字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。