用jstl截取字符串

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

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

Html代码 复制代码 收藏代码
  1. <c:setvar="testStr"value="做一个截取字符串长度的测试"
  2. <c:choose>
  3. <c:whentest="${fn:length(testStr) > 10}">
  4. <c:outvalue="${fn:substring(testStr, 0, 10)}......"/>
  5. </c:when>
  6. <c:otherwise>
  7. <c:outvalue="${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代码 复制代码 收藏代码
  1. package com.uisk.util;
  2. /**
  3. * 定义EL自定义函数
  4. *
  5. */
  6. publicclass UFunction {
  7. /**
  8. * 获取一个字符串的长度
  9. *
  10. * @param str
  11. * @return int
  12. */
  13. publicstaticint 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. publicstatic 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. publicstaticint 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代码 复制代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <taglibxmlns="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代码 复制代码 收藏代码
  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:setvar="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>
<%@ page language="java" pageEncoding="gbk"%>   
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="/WEB-INF/mytag.tld" prefix="myTag" %>   
  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
<html>   
   <body>   
     <c:set var="str" value="自定义函数,做一个截取字符串长度的测试"></c:set>   
     字条串"${str}"的长度是${myTag:getLen(str)}<br/>   
     字条串"${str}"截取前5个字符:${myTag:substr(str,0,5)}<br/>   
    5除以3取整数是:${myTag:chufa(5,3) }   
     
   </body>   
</html>  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值