原创

jstl标签截取指定字符串长度

jstl以前在jsp页面截取字符串时都是用Java表达式,感觉在jsp页面用多了Java表达式不是很好(那时主要是不知道jstl标签怎么去截取字符串,所以就只能用Java表达式了)。

在网上找了些相关资料jstl标签截取字符串主要有两种方法:


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

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

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目录下面对其进行配置:

<?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>


调试测试:

<%@ 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>


关注下方微信公众号“Java精选”(w_z90110),回复关键字领取资料:如HadoopDubboCAS源码等等,免费领取资料视频和项目。 

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。

评论

分享:

支付宝

微信