定義和使用EL函數


EL為表達式語言,在EL中,允許定義和使用函數。下面將介紹如何定義和使用EL的函數。

 1. 定義和使用函數

函數的定義和使用分為以下3個步驟:

(1)編寫一個Java類,並在該類中編寫公用的靜態方法,用於實現自定義EL函數的具體功能。

(2)編寫標簽庫描述文件,對函數進行聲明。該文件的擴展名為.tld,被保存到Web應用的WEB-INF文件夾下。

(3)在JSP頁面中引用標簽庫,並調用定義的EL函數,實現相應的功能。

下面通過一個具體的實例介紹EL函數的定義和使用。

例1.1 定義EL函數處理字符串中的回車換行和空白符。

(1)編寫一個Java類,名稱為StringDeal,將其保存在com.el包中,在該類中添加一個公用的靜態方法shiftEnter(),在該方法中替換輸入字符串中的回車換行符<br>,空格符為&nbsp;,最后返回新替換后的字符串。StringDeal類的完整代碼如下:

package com.el;

public class StringDeal {
    public static String shiftEnter(String str){  //定義公用的靜態方法
        String newStr = str.replaceAll("\r\n", "<br>"); //替換回車換行符
        newStr = str.replaceAll(" ", "&nbsp;"); //替換空格符
        return newStr;
    }
}

(2)編寫標簽庫描述文件,名稱為stringDeal.tld,並將其保存到WEB-INF文件夾下。關鍵代碼如下:

<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1" 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 web-jsptaglibrary_2_1.xsd">
 <tlib-version>1.0</tlib-version>
 <short-name>stringDeal TLD</short-name>
 <uri>/stringDeal</uri>
     <function>
        <name>shiftEnter</name>
        <function-class>com.el.StringDeal</function-class>
        <function-signature>java.lang.String shiftEnter(java.lang.String)</function-signature>
    </function>
</taglib>

參數說明:

<uri>標記:用於指定tld文件的映射路徑。在應用EL函數時,需要使用該標記指定的內容。

<name>標記:用於指定EL函數說對應方法的方法名,通常與Java文件中方法名相同。

<function-class>標記:用於指定EL函數所對應的Java文件,這里需要包括包名和類名,例如,上面的的代碼中,包名為com.el,類名為StringDeal。

<function-signature>標記:用於指定EL函數所對應的靜態方法,這里包括返回值的類型和入口參數的類型。在指定這些類型時,需要使用完整的類型名。

(3)編寫index.jsp文件,在該文件中添加一個表單及表單元素,用於收集內容信息。關鍵代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form name="form1" method="post" action="deal.jsp">
        <textarea name="content" cols="30" rows="5"></textarea>
        <br>
        <input type="submit" name="Button" value="提交">
    </form>
</body>
</html>

(4)編寫表單的處理頁deal.jsp文件,在該文件中應用上面定義的EL函數,對獲取到的內容信息進行處理(主要是替換字符串中的回車換行符和空格符)后顯示到頁面中。deal.jsp文件的具體代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="wghfn" uri="/stringDeal" %>
<%request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>顯示結果</title>
</head>
<body>
    內容為:<br>
    ${wghfn:shiftEnter(param.content)}
</body>
</html>

說明:在引用標簽庫時,指定的uri屬性與標簽庫描述文件中的<uri>標記的值時相對應的。

程序運行結果如下所示:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM