jstl中添加自定义的函数
由于jstl中提供的函数未必能够满足我们的要求,而我们又希望能够像jstl提供的函数那样能够轻松方便使用,那么可以通过自定义函数补充jsltl函数。给jstl添加自定义函数需要以下步骤:
- 定义一个static的public的方法unescape(),如:
package com.rrtong.util; public class Common { /*实现js的unescapse解码*/ public static String unescape(String src) { StringBuffer tmp = new StringBuffer(); tmp.ensureCapacity(src.length()); int lastPos = 0, pos = 0; char ch; while (lastPos < src.length()) { pos = src.indexOf("%", lastPos); if (pos == lastPos) { if (src.charAt(pos + 1) == 'u') { ch = (char) Integer.parseInt(src .substring(pos + 2, pos + 6), 16); tmp.append(ch); lastPos = pos + 6; } else { ch = (char) Integer.parseInt(src .substring(pos + 1, pos + 3), 16); tmp.append(ch); lastPos = pos + 3; } } else { if (pos == -1) { tmp.append(src.substring(lastPos)); lastPos = src.length(); } else { tmp.append(src.substring(lastPos, pos)); lastPos = pos; } } } return tmp.toString(); } }
- 定义一个unescape.tld的文件,并将该文件放在WEB-INF/jstl/目录下(这个可以根据个人需要定义位置)。
<?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"> <description>unescape</description> <display-name>unescape</display-name> <tlib-version>1.0</tlib-version> <short-name>unescape</short-name> <uri>http://java.sun.com/jsp/jstl/rrtong</uri> <function> <name>unescape</name> <function-class>com.rrtong.util.Common</function-class> <function-signature>java.lang.String unescape(java.lang.String)</function-signature> </function> </taglib>
注意
uri:是很重要标识,虽然网上说可以随意定义,但由于是要引用到jsp文件中,所以不能跟已有的标识重复如http://java.sun.com/jsp/jstl/functions,否则会覆盖掉原有定义的jstl方法。
name:jstl函数别名,保持与静态方法名一致就可以了
function-class:引用的类名,需要完整路径
function-signature:用法说明,除了基本类型外,其他类型都必须写完整的路径
- 在web.xml配置unescape.tld
在<jsp-config>标签中添加以下配置代码,若没有<jsp-config>,则直接创建<jsp-config>,重启tomcat
<jsp-config> <taglib> <taglib-uri>http://java.sun.com/jsp/jstl/rrtong</taglib-uri> <taglib-location>/WEB-INF/jstl/unescape.tld</taglib-location> </taglib> <jsp-config>
- 在代码中引用unescape()方法
在jsp文件头中添加引用代码
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/rrtong"%>
prefix:表示别名,允许与其他标签的别名一致。以下为调用unescape()方法位置
<div class="mesageMid">${fn:unescape(videoComment.content)}</div>
wala-wo