使用JSTL在JSP页面截取字符串
1、使用C标签和fn标签
需要引用的标签库:
截取方法:
2、使用S标签:
需要导入的标签库:
<%@ taglib prefix="s" uri="/struts-tags" %>截取方法: 3、自定义JSTL标签: 首先自定义一个java类:UFunction.java
/** * 定义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 getResult(int first,int second){ return first/second; } }然后在WEB-INF下面建立一个tld文件:myTag.tld
<?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>get the string length</description><!-- 对这个EL方法进行描述 --> <name>getLen</name><!-- 调用El方法的名字 --> <function-class>com.SSHED.util.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.SSHED.util.UFunction</function-class> <function-signature>java.lang.String substr(java.lang.String,int,int)</function-signature> </function> <function> <description>getResult</description> <name>getResult</name> <function-class>com.SSHED.util.UFunction</function-class> <function-signature>int getResult(int,int)</function-signature> </function> </taglib>
页面测试:
先导入需要的标签库:
截取方法:
期间遇到的问题:
org.apache.jasper.JasperException:XXX.jsp(64,62) equal symbol expected
是由于单引号和双引号的混乱使用导致的。
解决办法:
将双引号里面的双引号改成单引号,单引号里面的双引号该成单引号。