用jstl截取字符串

来源:互联网 发布:四选一数据选择器实验 编辑:程序博客网 时间:2024/05/17 01:35
用jstl截取字符串
2009年05月04日 星期一 21:56

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代码:

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

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

    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.   
    18.      <function>   
    19.          <description>substring</description>   
    20.          <name>substr</name>   
    21.          <function-class>com.cw.common.UFunction</function-class>   
    22.          <function-signature>   
    23.              java.lang.String substr(java.lang.String,int,int)   
    24.          </function-signature>   
    25.      </function>   
    26.   
    27.      <function>   
    28.          <description>chufa</description>   
    29.          <name>chufa</name>   
    30.          <function-class>com.cw.common.UFunction</function-class>   
    31.          <function-signature>int chufa(int,int)</function-signature>   
    32.      </function>   
    33. </taglib>  

    最后进行调用测试:

    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.   
    5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
    6. <html>   
    7.    <body>   
    8.      <c:set var="str" value="自定义函数,做一个截取字符串长度的测试"></c:set>   
    9.      字条串"${str}"的长度是${myTag:getLen(str)}<br/>   
    10.      字条串"${str}"截取前5个字符:${myTag:substr(str,0,5)}<br/>   
    11.     5除以3取整数是:${myTag:chufa(5,3) }   
    12.      
    13.    </body>   
    14. </html>  
    原创粉丝点击