jstl函数自定义el函数

2012/04/05 1259点热度 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

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

文章评论

myflixer free watch movies online Watch All of Us Are Dead 2022 Free Online Watch The Book of Boba Fett 2021 Free Online Watch Blacklight 2022 Free Online