2019独角兽企业重金招聘Python工程师标准>>>

用jstl截取字符串

jstl以前在jsp页面截取字符串时都是用Java表达式,感觉在jsp页面用多了Java表达式不是很好(那时主要是不知道jstl标签怎么去截取字符串,所以就只能用Java表达式了)。今天在网上找了些相关资料,原来jstl标签是可以截取字符串的,主要有两种方法:

一、用jstl原有的标签库中方法(fn函数)

[html] view plain copy print ?
  1. <c:set var="testStr" value="做一个截取字符串长度的测试"
  2. <c:choose>
  3. <c:when test="${fn:length(testStr) > 10}">
  4. <c:out value="${fn:substring(testStr, 0, 10)}......" />
  5. </c:when>
  6. <c:otherwise>
  7. <c:out value="${testStr}" />
  8. </c:otherwise>
  9. </c:choose>
<c:set var="testStr" value="做一个截取字符串长度的测试"<c:choose><c:when test="${fn:length(testStr) > 10}"><c:out value="${fn:substring(testStr, 0, 10)}......" /></c:when><c:otherwise><c:out value="${testStr}" /></c:otherwise></c:choose>

注:记得要引用标签库
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
        <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

二、自定义函数

jstl自带的标签有时候可能满足不了我们的需求,这时我们就要用到自定义函数。
新建一个类,定义好所需要的方法:

Java代码:

[java] view plain copy print ?
  1. package com.uisk.util;
  2. /**
  3. * 定义EL自定义函数
  4. *
  5. */
  6. public class UFunction {
  7. /**
  8. * 获取一个字符串的长度
  9. *
  10. * @param str
  11. * @return int
  12. */
  13. public static int getLen(String str) {
  14. return str.length();
  15. }
  16. /**
  17. * 截取字符串
  18. *
  19. * @param str
  20. * @param start
  21. * @param end
  22. * @return String
  23. */
  24. public static String substr(String str, int start, int end) {
  25. return str.substring(start, end);
  26. }
  27. /**
  28. * 两数相除获取整数结果
  29. *
  30. * @param first
  31. * @param second
  32. * @return int
  33. */
  34. public static int chufa(int first, int second) {
  35. return first / second;
  36. }
  37. }
package com.uisk.util;   /**
* 定义EL自定义函数
*
*/
public class UFunction {   /*** 获取一个字符串的长度** @param str* @return int*/  public static int getLen(String str) {   return str.length();   }   /*** 截取字符串** @param str* @param start* @param end* @return String*/  public static String substr(String str, int start, int end) {   return str.substring(start, end);   }   /*** 两数相除获取整数结果*  * @param first* @param second* @return int*/  public static int chufa(int first, int second) {   return first / second;   }
}

再建一个tld文件放在WEB-INF目录下面对其进行配置:

[html] view plain copy print ?
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <taglib xmlns="http://java.sun.com/xml/ns/j2ee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
  5. version="2.0">
  6. <tlib-version>1.0</tlib-version>
  7. <short-name>len</short-name>
  8. <function>
  9. <description>calculate string length</description><!-- 对这个EL方法的描述   -->
  10. <name>getLen</name><!-- 调用EL方法的名称 -->
  11. <function-class>com.cw.common.UFunction</function-class>
  12. <function-signature>
  13. int getLen(java.lang.String)
  14. </function-signature>
  15. <example>${len:getLen(str)}</example><!-- 例如 -->
  16. </function>
  17. <function>
  18. <description>substring</description>
  19. <name>substr</name>
  20. <function-class>com.cw.common.UFunction</function-class>
  21. <function-signature>
  22. java.lang.String substr(java.lang.String,int,int)
  23. </function-signature>
  24. </function>
  25. <function>
  26. <description>chufa</description>
  27. <name>chufa</name>
  28. <function-class>com.cw.common.UFunction</function-class>
  29. <function-signature>int chufa(int,int)</function-signature>
  30. </function>
  31. </taglib>
<?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">   <tlib-version>1.0</tlib-version>   <short-name>len</short-name>   <function>   <description>calculate string length</description><!-- 对这个EL方法的描述   -->   <name>getLen</name><!-- 调用EL方法的名称 -->   <function-class>com.cw.common.UFunction</function-class>   <function-signature>   int getLen(java.lang.String)   </function-signature>   <example>${len:getLen(str)}</example><!-- 例如 -->   </function>   <function>   <description>substring</description>   <name>substr</name>   <function-class>com.cw.common.UFunction</function-class>   <function-signature>   java.lang.String substr(java.lang.String,int,int)   </function-signature>   </function>   <function>   <description>chufa</description>   <name>chufa</name>   <function-class>com.cw.common.UFunction</function-class>   <function-signature>int chufa(int,int)</function-signature>   </function>
</taglib>

最后进行调用测试:

[html] view plain copy print ?
  1. <%@ page language="java" pageEncoding="gbk"%>
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  3. <%@ taglib uri="/WEB-INF/mytag.tld" prefix="myTag" %>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5. <html>
  6. <body>
  7. <c:set var="str" value="自定义函数,做一个截取字符串长度的测试"></c:set>
  8. 字条串"${str}"的长度是${myTag:getLen(str)}<br/>
  9. 字条串"${str}"截取前5个字符:${myTag:substr(str,0,5)}<br/>
  10. 5除以3取整数是:${myTag:chufa(5,3) }
  11. </body>
  12. </html>

转载于:https://my.oschina.net/hokkaido/blog/103736

用jstl截取字符串相关推荐

  1. jstl 处理字符串函数 substring spli等

    在jstl中的fn标签也是我们在网页设计中经常要用到的很关键的标签,在使用的时候要先加上头 <%@ taglib uri="http://java.sun.com/jsp/jstl/f ...

  2. java中截取后几位字符串_java截取字符串后几位

    java中常用的字符串的截取方法_计算机软件及应用_IT/计算机_专业资料.jsp中常见使用技术,js,jstl,eclipse,java 1.length() 字符串的长度 例:char chars ...

  3. java 比较字符串前几位_java截取字符串前几位

    java截取字符串_IT/计算机_专业资料.java截取字符串 1根据字符串 S... java中常用的字符串的截取方法_计算机软件及应用_IT/计算机_专业资料.jsp中常见使用技术,js,jstl ...

  4. Excel中如何截取字符串中指定字符后的部分字符

    1.如何给某列属性为时间整体加一个时间值: 场景一:假如我有一个excel中的某一列如下图所示,如何将该列的时间(用B代替整列)整体加一分钟呢?方法很简单,在空白单元格填写时间格式图中A所示:复制单元 ...

  5. CSS截取字符串,兼容浏览器

    今天在经典论坛看到有同学问到CSS截取字符多余省略号代替的求助且要兼容FF... 这个的确是个比较头痛的问题,现在我在的公司都是程序截取显示省略符的.兼容是没问题,但在中文和数学或字母混排时,就会有点 ...

  6. Swift4 String截取字符串

    var str1 = "AlexanderYeah";// 1 截取字符串的第一种方式 // prefix 截取前3个字符串 var str2 = str1.prefix(3); ...

  7. smarty_modifier_truncate,无或者有md_substr的情况下都能正确截取字符串的php函数,可用于smarty。...

    smarty_modifier_truncate,无或者有md_substr的情况下都能正确截取字符串的php函数,可用于smarty. function smarty_modifier_trunca ...

  8. ASP.NET技巧:两个截取字符串的实用方法

    两个截取字符串的实用方法(超过一定长度自动换行) 1/** <summary> 2        /// 截取字符串,不限制字符串长度 3        /// </summary& ...

  9. Java --循环截取字符串

    2019独角兽企业重金招聘Python工程师标准>>> 最近做工程时,遇到需要循环截取字符串的情况,写一篇日记,记录处理方法. 需求 从数据库取回来的数据格式如下: 西南-零起点-香 ...

最新文章

  1. Spring学习-理解IOC和依赖注入
  2. Unity3D开发——LeRunning的人物角色信息的显示
  3. keras faster物体检测_URPC 2019水下目标检测竞赛冠军方案:多图像融合增强
  4. C语言归并排序Merge Sort算法(附完整源码)
  5. php设计模式之——建造者模式
  6. docker 常用命令(1)
  7. Apache日志配置
  8. android媒体播放框架,Android 使用超简单的多媒体播放器JiaoZiVideoPlayer
  9. python变量声明语句_python – 在条件语句中声明变量有问题吗?
  10. 【实操手册】一篇文章教你快速开始使用视频点播
  11. Solr删除managedschema
  12. Host-Only(仅主机模式)
  13. JS讲解跟遇到的问题
  14. MySQL将一张表的某些列数据,复制到另外一张表,并且修改某些内容
  15. 《Android NFC 开发实战详解 》简介+源码+样章+勘误ING
  16. trucksim安装教程
  17. PowerBuilder 2017R3安装指南2021最新
  18. SnowNLP——SnowNLP是什么及SnowNLP的使用示例
  19. java——7个小案例
  20. 基本农田卫星地图查询_天地图山东,购房者勘测利器,国产骄傲

热门文章

  1. C# 笔记 获取程序当前目录
  2. Spring Boot(Spring的自动整合框架)
  3. 从零开始React:一档 React环境搭建,语法规则,基础使用
  4. pycharm 汉化
  5. Java入门系列-16-继承
  6. Java方向如何准备BAT技术面试答案
  7. 使用python抓取百度漂流瓶妹纸照片
  8. JDK安装以及开发环境搭建
  9. SQL注入漏洞的检测与防范技术
  10. Domino+Qucikplace+Sametime构建企业办公平台图文攻略(三)