2011-08-01 08:55 5485人阅读 评论(0) 收藏 举报

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

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

  1. <c:set var="testStr" value="做一个截取字符串长度的测试"
  2. <c:choose>
  3. <c:when test="${fn:length(testStr) > 10}">
  4. <c:out value="${fn:substring(testStr, 0, 10)}......" />
  5. </c:when>
  6. <c:otherwise>
  7. <c:out value="${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代码:

  1. package com.uisk.util;
  2. /**
  3. * 定义EL自定义函数
  4. *
  5. */
  6. public class UFunction {
  7. /**
  8. * 获取一个字符串的长度
  9. *
  10. * @param str
  11. * @return int
  12. */
  13. public static int 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. public static 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. public static int 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目录下面对其进行配置:

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

最后进行调用测试:

  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:set var="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>

用jstl截取字符串的更多相关文章

  1. JSTL截取字符串

    引入头文件支持<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> &l ...

  2. 使用jstl 截取字符串

    时常碰见这样的 问题:获取数据库中的文本域的时候经常是在p标签中的,在页面显示的时候也是带着p标签,如何去除p标签呢 这里提供一个使用jstl的方式 1.首先导入jstl的函数标签库 <%@ t ...

  3. JSTL截取字符串以及格式化时间

    fn函数里面有很多好用的方法 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions& ...

  4. 只显示 前100个字 java 实现截取字符串!使用! <c:if test="${fn:length(onebeans.info)>100 }">${ fn:substri

    博客 文章 只显示 前100个字 java 实现截取字符串!使用! <c:if test="${fn:length(onebeans.info)>100 }">$ ...

  5. EL表达式中如何截取字符串

    EL表达式中如何截取字符串 可以截取,用fn函数:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/ ...

  6. jstl 处理字符串函数 substring spli等

    在jstl中的fn标签也是我们在网页设计中经常要用到的很关键的标签,在使用的时候要先加上头 <%@ taglib uri="http://java.sun.com/jsp/jstl/f ...

  7. ThinkPHP 模板substr的截取字符串函数

    ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...

  8. shell编程常用的截取字符串操作

    1.          常用的字符串操作 1.1.           替换字符串:$ echo ${var/ /_}#支持正怎表达式 / /表示搜索到第一个替换,// /表示搜索到的结果全部替换. ...

  9. [No0000A4]DOS命令(cmd)批处理:替换字符串、截取字符串、扩充字符串、获取字符串长度

    1.替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串.举例说明其功能:========================================= @echo off set a ...

随机推荐

  1. shopnc 二次开发 每日签到积分领取

    /* 开始shopnc!!!!! url:xxx.com/index.php?act=index&op=userjf 一个四线城市的半吊子程序员~ 实现:前台模板文件 随便加入<a> ...

  2. java 堆栈

    堆栈(stack).位于通用RAM中,但通过它的“堆栈指针”可以从处理器哪里获得支持.堆栈指针若向下移动,则分配新的内存:若向上移动,则释放那些 内存.这是一种快速有效的分配存储方法,仅次于寄存器. ...

  3. Android permission

    1. users-permission Users-permission is the permission that this app should acquire, so that the app ...

  4. linux 无法解压过大文件解决

    [root@vmbbak yum]# unzip RHEL_5.7\ x86_64\ DVD-1.zip error: Zip file too big (greater than 429495910 ...

  5. C# upnp

    //获取Host Name var name = Dns.GetHostName(); Console.WriteLine("用户:" + name); //从当前Host Nam ...

  6. IE、FF、Safari、OP不同浏览器兼容报告

    IE.FF.Safari.OP不同浏览器兼容报告 1         浏览器内核简介 Trident IE浏览器(GreenBrowser绿色浏览器, 遨游浏览器....都是IE) Geckos Fi ...

  7. CK13物料价格评估的数据ALV显示

    *&---------------------------------------------------------------------* *& Report  ZPP023 * ...

  8. 关于hql一些不常见但好用的技巧(个人总结)

    最近一直在用spring-data-jpa这个东西,感觉方法上注解hql语句已经是很常用的方法了, 有一些关于hql的经验分享一下: 一.hql的join hql的优势就是直接的关联关系嘛,但是通过h ...

  9. SILVERLIGHT 多维表头、复杂表头 MULTIPLE HEADER

    先上图, 众所周知,利用silverlight datagrid展示数据相当方便,但是想要弄出一个漂亮的表头却要费尽周折.此文的目的就是简要介绍一下利用第三方控件 C1.Silverlight.Fle ...

  10. 读取iOS通讯录

    首先导入头文件 #import <AddressBook/AddressBook.h> 获取权限 读取通讯录 - (void)loadPerson { ABAddressBookRef a ...