用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自帶的標籤有時候可能滿足不了我們的需求,這時我們就要用到自定義函數。
新建一個類,定義好所需要的方法:

Java代碼:

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>  


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章