您的位置:首页 > Web前端 > JavaScript

用jstl截取字符串

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

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

[html] view
plain copy print ?

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

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

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;     
     }     
}    

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

10bc1
* @return int
*/
public static int chufa(int first, int second) {
return first / second;
}
}


 

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

 

[html] view
plain copy print ?

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

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

<%@ 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> 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jstl 截取字符串