题外话:做过大型网站前台的Web开发程序员最头疼的事情就是前台首页的布局,这其中最最头疼的就是标题字符的截取的问题,虽然有fn:substring,但表现率以及对中文的支持均不够完善,其实最终还是归结为客户要求太高了,不过做事情就应该严谨嘛,尤其干我们这一行。。在我们老大的指点下,了解了如何自定义EL函数,哈哈,今天实现了它。

开发步骤:

1、 添加实现静态方法

/** * @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),在其中注册该静态方法

<?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是函数使用前缀。

4、 页面使用,超级简单!

${fnx:abbreviate('要截取的源字符串', '字节长度', '尾部追加字符')}

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

文章原创,转载请注明出处:http://blog.csdn.net/xxd851116

转载于:https://www.cnblogs.com/xingxiudong/archive/2009/08/30/3987060.html

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

  1. spring mvc学习(37):JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)

    EL表达式和JSTL标签库: 在JSP页面代替java代码,便于编写 一.EL表达式 作用: ${} 简化脚本表达式 <%= %> j2ee1.4以前版本需指定<%@ page is ...

  2. 自定义EL函数、自定义JSTL标签

    自定义EL函数 1.做一个类(静态) package com.maya.el;public class ELBiaoDaoShi {public static String TiHuan(String ...

  3. JAVAWEB开发之JSTL标签库的使用、 自定义EL函数、自定义标签(带属性的、带标签体的)

    JSTL  JSTL简介: JSTL的全称:JSP Standard Tag Library,JSP标准标签库 JSTL的作用:   提供给Java Web开发人员一个标准通用的标签函数库   和EL ...

  4. [转]EL函数、自定义EL函数、自定义标签

    EL函数 1.EL函数的作用:操作字符串 2.在JSP页面中要引入EL函数库 <%@ taglib prefix="fn" uri="http://java.sun ...

  5. php自定义函数数学计算,ThinkPHP自定义函数解决模板标签加减运算的方法

    本文实例讲述了ThinkPHP自定义函数解决模板标签加减运算的方法.分享给大家供大家参考.具体如下: 实际项目中,我们经常需要标签变量加减运算的操作.但是,在ThinkPHP中,并不支持模板变量直接运 ...

  6. 28. EL 表达式 以及 JSTL 标签库

    28. EL 表达式 以及 JSTL 标签库 1.EL 表达式 a)什么是 EL 表达式,EL 表达式的作用? EL 表达式的全称是:Expression Language.是表达式语言. EL 表达 ...

  7. jsp 将java对象转json对象 (自定义EL函数)

    功能:在 jsp 页面将 java对象 转换为 json对象 (使用自定义EL函数实现) 步骤: 1. 创建 JSP EL 工具类 2. 创建 tld 文件 3. 配置 web.xml 文件 4. 完 ...

  8. java el表达式 if else_jsp EL表达式和JSTL标签if-else if-else用法

    java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法 一.条件运算符 ${user.gender==?'男':'女'} 二.if() code.. ...

  9. java标签库jstl-el表达式介绍使用配置手册_JAVA EE 实验报告EL表达式和jstl标签库的使用...

    昆明理工大学信息工程与自动化学院学生实验报告 ( 2013 -2014 学年第一学期) 课程名称:Java EE技术开课实验室:系机房444 2013 年 12月2 日年级.专业.班计科111 学号姓 ...

最新文章

  1. EasyUI中搜索框的简单使用
  2. BZOJ1821 [JSOI2010]Group 部落划分 Group Kruskal
  3. 排序算法以及其java实现
  4. 模糊逻辑系统_在模糊逻辑系统中工作 人工智能
  5. python3.7下载教程视频_视频 | 我选择Python3.7来学习!顺便把教程分享给大家
  6. aspx页面中文汉字显示为乱码
  7. windows 运行banana
  8. 机器学习实战——AdaBoost
  9. iPhone SDK开发基础之UIPageControl编程
  10. 计算机教室网络连接示意图,多媒体电教室解决方案
  11. 职称计算机 将计算机broad_1下的e盘映射为k盘网络驱动器,职称计算机考试网络基础)试题及答案操作.doc...
  12. erroe C1083:无法打开包括文件(源文件)
  13. 知乎 live 记录
  14. 开源项目的版权声明已无存在必要?
  15. 层次分析法(AHP)模型的应用案例
  16. 怎么将小程序添加到我的小程序?
  17. 威联通搭建Frp实现内网穿透
  18. 眼见为实,看看MySQL中的隐藏列
  19. 福大软工 · 第十一次作业 - Alpha 事后诸葛亮(团队)
  20. uboot启动内核的相关命令详解——boot、bootm

热门文章

  1. 数据结构数组计算机中的应用,2018考研计算机:数据结构数组和广义表复习重点...
  2. html5页面结构案例,前端学习笔记(五)HTML+CSS静态页面实战案例:幸福西饼首页和百度首页...
  3. Java写文件导致io过高_161108、Java IO流读写文件的几个注意点
  4. linux s t i a权限,关于Linux下s、t、i、a权限
  5. 循环斐波那契数列_第五课:斐波那契数列(第一课时)
  6. 【大总结1】数据结构与传统算法总结
  7. Docker 的日志相关整理
  8. 高效解析xml的总结,闲下来写的
  9. 《数据结构上机实验(C语言实现)》笔记(1 / 12):绪论
  10. C语言学习:malloc()函数