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>
注:记得要引用标签库
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;
- }
- }
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.0tlib-version>
- <short-name>lenshort-name>
- <function>
- <description>calculate string lengthdescription><!-- 对这个EL方法的描述 -->
- <name>getLenname><!-- 调用EL方法的名称 -->
- <function-class>com.cw.common.UFunctionfunction-class>
- <function-signature>
- int getLen(java.lang.String)
- function-signature>
- <example>${len:getLen(str)}example><!-- 例如 -->
- function>
- <function>
- <description>substringdescription>
- <name>substrname>
- <function-class>com.cw.common.UFunctionfunction-class>
- <function-signature>
- java.lang.String substr(java.lang.String,int,int)
- function-signature>
- function>
- <function>
- <description>chufadescription>
- <name>chufaname>
- <function-class>com.cw.common.UFunctionfunction-class>
- <function-signature>int chufa(int,int)function-signature>
- function>
- taglib>
<?xml version="1.0" encoding="UTF-8"?>
1.0lencalculate string length<!-- 对这个EL方法的描述 -->
getLen<!-- 调用EL方法的名称 -->
com.cw.common.UFunction
int getLen(java.lang.String)
${len:getLen(str)}<!-- 例如 -->
substringsubstrcom.cw.common.UFunction
java.lang.String substr(java.lang.String,int,int)
chufachufacom.cw.common.UFunctionint chufa(int,int)
最后进行调用测试:
- <%@ page language="java" pageEncoding="gbk"%>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- <%@ taglib uri="/WEB-INF/mytag.tld" prefix="myTag" %>
- nbsp;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>
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26495863/viewspace-1357151/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26495863/viewspace-1357151/