EL自定義函數的方法

本文轉載自:http://weizhan.51cto.com/article/view/591e86c6f2dd870424681f81

EL函數能完成對數據的統一操作,其開發步驟如下:

  • 開發函數處理類,處理類就是普通的類;每個函數對應類中的一個靜態方法;

  • 建立TLD文件,定義表達式函數

  • 在WEB.XML文件中配置(可省略)

  • 在JSP頁面內導入並且使用

一、定義一個普通類,提供實現功能的靜態方法

EL函數只能調用靜態方法

public class MyFunctions {
    /**
     * 獲得當前日期時間
     * @return
     */
    public static String getNowDateTime(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設置日期格式
        return sdf.format(new Date());
    }
}

二、EL函數的配置

在WEB-INF目錄下建立一個擴展名爲tld的xml文件

<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">

  <tlib-version>1.0</tlib-version>
  <short-name>myfn</short-name>
  <uri>http://imentors.net.cn/jsp/function</uri>

  <function>
    <description>
              獲得當前日期時間
    </description>
    <!--這裏name可以隨便寫-->  
    <name>getNowDateTime</name>
  <!--這裏最爲重要,指定類所在位置,以及類方法的一些重要信息-->  
    <function-class>cn.net.imentors.javaweb.el.MyFunctions</function-class>
    <!--函數的返回值和參數必須是全類名-->
    <function-signature>java.lang.String getNowDateTime()</function-signature>
  </function>
  </taglib>

三、在WEB中配置

如果tld文件是在WEB-INF目錄下,就不需要這一步了

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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-app_2_5.xsd">
    <jsp-config>
        <taglib>
            <!-- 配置標籤的引用地址 JSP頁面中引用時使用-->
            <taglib-uri>/myfn</taglib-uri>
            <!-- 配置標籤的TLD文件地址 -->
            <taglib-location>/WEB-INF/myfn.tld</taglib-location>
        </taglib>
    </jsp-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

四、在JPS中使用

通過taglib指令引入外部的函數庫

<%@ taglib uri="http://imentors.net.cn/jsp/function" prefix="myfn"%>
${myfn:getNowDateTime() }



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章