JSTL fn函数库

 使用时必须引入:

<%@ taglib prefix="fn"   uri="http://java.sun.com/jsp/jstl/functions" %>

* fn:contains(m,n) 如果参数m中包含参数n,返回true
* fn:containsIgnoreCase(m,n) 同上,不区分大小写
* fn:endsWith(m,n) 如果参数m以参数n结尾,返回true
* fn:escapeXml(m) 将有特殊意义的xml和html转换为对应的xml,并返回
* fn:indexOf(m,n) 返回参数n在参数m中第一次出现的位置
* fn:join(m,n) 讲一个给定的数组m用给定的间隔符n串在一起,并返回该字符串
* fn:length(item) 返回参数item包含元素的数量,数组,集合或者String,string返回字符数
* fn:replace(m,b,a)返回一个string,用参数a字符串替换m中所有的b,并将替换后的结果返回
* fn:split(m,n) 以参数n为分隔符分割参数m,分割后的每一部分就是数组的一个元素
* fn:startsWith(m,n) 如果参数m以参数n开头,返回true
* fn:substring(m,b,e) 从b开始截取字符串m,截取到e,包含e的位置
* fn:substringAfter(m,n) 返回n在参数m中后面的那一部分字符串
* fn:substringBefore(m,n) 返回参数n在参数m中前面的那一部分字符串
* fn:toLowerCase(m) 将参数m所有的字符变为小写,并将其返回
* fn:toUpperCase(m) 将m所有的字符变为小写并返回
* fn:trim(m) 去除参数m首尾的空格并返回


EL自定义函数

 EL自定义函数开发步骤

    *  编写EL自定义函数映射的java方法


    *  编写标签库描述文件(tld文件),在tld文件中建立关系,并描述自定义函数














例子:

后台代码

public class ElFunction {

public static String subString(String str, Integer begin, Integer end) {
if (str != null && !"".equals(str)) {
return str.substring(begin, end);
}
return "";
}
public static Integer getLength(String str){
if(str!=null){
return str.length();
}
return 0;
}
}

 xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<description>el 1.0 core library</description>
<display-name>el core</display-name>
<tlib-version>1.0</tlib-version>
<short-name>myfn</short-name>
<uri>http://www.yxkong.com/jsp/myel/core</uri>

<!-- 注册函数 -->
<function>
<!-- 定义在jsp页面的el表达式中使用的el函数的名称和真实的函数名称可以不一样,但建议起相同的名称-->
<name>subxxx</name>
<!-- 定义函数所在类的完整路径 -->
<function-class>cn.itcast.el.ElFunction</function-class>
<!--类中的函数名称 描述函数签名[函数的返回类型 函数的名称(参数类型1,参数类型2)]-->
<function-signature>java.lang.String subString(java.lang.String,java.lang.Integer,java.lang.Integer)</function-signature>
</function>

<!-- 注册函数 -->
<function>
<!-- 定义在jsp页面的el表达式中使用的el函数的名称和真实的函数名称可以不一样,但建议起相同的名称-->
<name>getLength</name>
<!-- 定义函数所在类的完整路径 -->
<function-class>cn.itcast.el.ElFunction</function-class>
<!--类中的函数名称 描述函数签名[函数的返回类型 函数的名称(参数类型1,参数类型2)]-->
<function-signature>java.lang.Integer getLength(java.lang.String)</function-signature>
</function>
</taglib>


<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ taglib uri="/WEB-INF/mytld/myelfunction.tld" prefix="myfn"%>
<html>
<head>
<title>My JSP 'el.jsp' starting page</title>
</head>
<body>
<%
pageContext.setAttribute("str","abcdef");
%>
${myfn:subxxx(str,1,3)}<br>

${myfn:getLength(str)}
</body>
</html>