jstl函数自定义el函数

2012/04/05 1893点热度 0人点赞 0条评论

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方法

    *  此方法必须是public static类型的方法

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

    <descripttion>方法库的描述</description>

    <display-name>方法库的概述</display-name>

    <tlib-version>版本号<tlid-version>

    <short-name>自定义前缀</short-name>

    <uri>唯一标识该tld文件的名称</uri>

     <!--配置一个自定义的EL函数-->

   <function>

       <name>该方法在页面中使用的名称</name>

       <function-class>指定函数所在的java类的具体地址</function-class>

       <function-signature>指定java中静态函数的方法签名格式( 返回值  方法名(参数类型))<function-signature>

       比如  java.lang.String toGBK(java.lang.String)

      //参数和返回值为string类型的方法

  </function>

例子:

后台代码

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>

*在jsp页面中导入和使用自定义函数

<%@ 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>

yxkong

这个人很懒,什么都没留下

文章评论