由于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>

jstl中添加自定义的函数的更多相关文章

  1. jQuery中添加自定义或函数方法

    <script type="text/javascript"> (function () { $.fn.parHy = function (val) { alert(v ...

  2. JSTL中EL表达式无法直接取size的处理

    jsp中使用${list.size }会编译成list.getSize()方法,并不能获取list的长度,因为程序回去找List对象中的getSize()方法,所以只能想别的办法, 一种方法是在后台程 ...

  3. EL表达式 JSTL中的常用EL函数 动态数据的国际化

    ELppt: EL 全名为Expression Language.EL主要作用: 获取数据: •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数据.( ...

  4. Jmeter函数助手中添加自定义函数

    最近,群里的牛肉面大神有个需求,是将每个post请求的body部分做一个加密操作,其实这个需求不算难,用beanshell引入加密函数的包,然后调用就行了.只是,如果请求多了,每次都要调用一下自己加密 ...

  5. JSTL中foreach与fn表达式

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

  6. JSTL中c:forEach循环里的值的substr操作及对String操作的常用API

    <c:forEach items="${dataList}" var="item" varStatus="itemStatus"> ...

  7. 在OpenSSL中添加自定义加密算法

    一.简介 本文以添加自定义算法EVP_ssf33为例,介绍在OpenSSL中添加自定义加密算法的方法 二.步骤 1.修改crypto/object/objects.txt,注册算法OID,如下: rs ...

  8. LoadRunner中的Web 函数列表

    LoadRunner中的Web 函数列表 web test LoadRunner fuction_list D:\Program Files (x86)\Mercury Interactive\Mer ...

  9. Python3中的字符串函数学习总结

    这篇文章主要介绍了Python3中的字符串函数学习总结,本文讲解了格式化类方法.查找 & 替换类方法.拆分 & 组合类方法等内容,需要的朋友可以参考下. Sequence Types ...

随机推荐

  1. WordPress 'is_serialized()'远程任意代码执行漏洞(CVE-2013-4338)

    漏洞版本: WordPress 3.6 漏洞描述: Bugtraq ID:62345 CVE ID:CVE-2013-4338 WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PH ...

  2. JavaScript实现网页背景自动变色

    JavaScript实现网页背景自动变色,自己变换颜色,设定时间和颜色值即可,在你设定的颜色值.一定时间内自动切换网页背景颜色. <!DOCTYPE HTML PUBLIC "-//W ...

  3. HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)

    Recursive sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  4. TFS2010中文版安装

    VS2010的中文版出来一段时间了,对TFS2010的了解,也有一段时间了,只不过中文版还是首次见到.于是把第一次安装的图片分享出来,公供参数. TFS2010安装环境是操作系统为Windows Se ...

  5. ASP.NET 路由

    URL 模式可以包含文本值和变量占位符(也称为“URL 参数”).  文本和占位符位于由斜杠 (/) 字符分隔的 URL 段中. 当生成请求时,URL 分析为段和占位符,变量值提供给请求处理程序.  ...

  6. 洛谷1439 排列LCS问题

    洛谷1439 排列LCS问题 本题地址:http://www.luogu.org/problem/show?pid=1439 题目描述 给出1-n的两个排列P1和P2,求它们的最长公共子序列. 输入输 ...

  7. 如何让虚拟目录里面的webconfig不继承网站的设置

    在一个网站 中国红木网 下 建一个虚拟目录,结果虚拟目录系统会调用 中国红木网 上的web.config, 在网上找到以下解决方案 在(如根目录)所在的Web.config加上 如:<locat ...

  8. 28个Unix/Linux的命令行神器

    下面是Kristóf Kovács收集的28个Unix/Linux下的28个命令行下的工具(原文链接),有一些是大家熟悉的,有一些是非常有用的,有一些是不为人知的.这些工具都非常不错,希望每个人都知道 ...

  9. oracle删除当前用户下所有表

    1.如果有删除用户的权限,则可以: drop user user_name cascade; 加了cascade就可以把用户连带的数据全部删掉. 删除后再创建该用户.--创建管理员用户create u ...

  10. hostname、uname、dmesg、fdisk

    hostname uname fdisk -l