定義标簽類,裡面的方法必須是static靜态的方法:
<code>package</code> <code>com.hanchao.el;</code>
<code>import</code> <code>java.text.SimpleDateFormat;</code>
<code>import</code> <code>java.util.Date;</code>
<code>import</code> <code>com.hanchao.entity.User;</code>
<code>/**</code>
<code> </code><code>* 自定義EL表達式</code>
<code> </code><code>* 注意事項:方法必須是static的靜态方法</code>
<code> </code><code>* @author liweihan ([email protected])</code>
<code> </code><code>* @version 1.0 (2014年11月14日 下午2:20:57)</code>
<code> </code><code>*/</code>
<code>public</code> <code>class</code> <code>MyElTag {</code>
<code> </code><code>/**</code>
<code> </code><code>* 用來驗證使用者名是否為admin </code>
<code> </code><code>* [僅僅是測試,無意義]</code>
<code> </code><code>* @param user 實體類User</code>
<code> </code><code>* @return</code>
<code> </code><code>* </code>
<code> </code><code>* 2014年11月14日 下午2:27:14</code>
<code> </code><code>* liweihan</code>
<code> </code><code>*/</code>
<code> </code><code>public</code> <code>static</code> <code>boolean</code> <code>checkUsername(User user) {</code>
<code> </code><code>if</code> <code>(user.getName().equals(</code><code>"admin"</code><code>)) {</code>
<code> </code><code>return</code> <code>true</code><code>;</code>
<code> </code><code>}</code>
<code> </code><code>return</code> <code>false</code><code>;</code>
<code> </code><code>}</code>
<code> </code>
<code> </code><code>* 字元串反轉</code>
<code> </code><code>* @param str 需要反轉的字元串</code>
<code> </code><code>* 2014年11月14日 下午2:30:00</code>
<code> </code><code>public</code> <code>static</code> <code>String reverse(String str) {</code>
<code> </code><code>return</code> <code>new</code> <code>StringBuffer(str).reverse().toString();</code>
<code> </code><code>* 傳回字元串去掉前後空格的字元長度</code>
<code> </code><code>* @param str</code>
<code> </code><code>* 2014年11月14日 下午2:31:17</code>
<code> </code><code>public</code> <code>static</code> <code>int</code> <code>countStr(String str) {</code>
<code> </code><code>return</code> <code>str.trim().length();</code>
<code> </code><code>* 格式化日期</code>
<code> </code><code>* @param date 日期</code>
<code> </code><code>* @param pattern 格式</code>
<code> </code><code>* 2014年11月14日 下午3:33:33</code>
<code> </code><code>public</code> <code>static</code> <code>String formatTime(Date date ,String pattern) {</code>
<code> </code><code>SimpleDateFormat simpleDateFormat = </code><code>new</code> <code>SimpleDateFormat(pattern);</code>
<code> </code><code>return</code> <code>simpleDateFormat.format(date);</code>
<code>}</code>
<code>在WEB-INF下面建立一個tld檔案:</code>
<code><?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"UTF-8"</code><code>?></code>
<code><</code><code>taglib</code> <code>xmlns</code><code>=</code><code>"http://java.sun.com/xml/ns/j2ee"</code>
<code> </code><code>xmlns:xsi</code><code>=</code><code>"http://www.w3.org/2001/XMLSchema-instance"</code>
<code> </code><code>xsi:schemaLocation</code><code>=</code><code>"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"</code>
<code> </code><code>version</code><code>=</code><code>"2.0"</code><code>></code>
<code> </code><code><!-- 定義函數的版本 --></code>
<code> </code><code><</code><code>tlib-version</code><code>>1.0</</code><code>tlib-version</code><code>></code>
<code> </code><code><</code><code>short-name</code><code>>el</</code><code>short-name</code><code>></code>
<code> </code><code><!-- 定義函數的名稱 →</code>
<code> </code><code><short-name>myel</short-name></code>
<code> </code><code>--></code>
<code> </code><code><</code><code>uri</code><code>>http://so.tv.sohu.com/custom/functions</</code><code>uri</code><code>> </code>
<code> </code>
<code> </code><code><!-- 定義頂一個函數 --></code>
<code> </code><code><</code><code>function</code><code>></code>
<code> </code><code><!-- 函數描述 --></code>
<code> </code><code><</code><code>description</code><code>>check isOrNot admin</</code><code>description</code><code>></code>
<code> </code><code><!-- 函數名 → 注意:此處的名字和JSP頁面上名字一樣!</code>
<code> </code><code><name>checkUsername</name></code>
<code> </code><code>--></code>
<code> </code><code><</code><code>name</code><code>>check</</code><code>name</code><code>></code>
<code> </code><code><!-- 定義函數處理類 --></code>
<code> </code><code><</code><code>function-class</code><code>>com.hanchao.el.MyElTag</</code><code>function-class</code><code>></code>
<code> </code><code><!-- 函數參數說明 --></code>
<code> </code><code><</code><code>function-signature</code><code>></code>
<code> </code><code>boolean checkUsername(com.hanchao.entity.User)</code>
<code> </code><code></</code><code>function-signature</code><code>></code>
<code> </code><code><!-- 例子 --></code>
<code> </code><code><</code><code>example</code><code>>${el:check(user)}</</code><code>example</code><code>></code>
<code> </code><code></</code><code>function</code><code>></code>
<code> </code><code><!-- 反轉一個字元串 --></code>
<code> </code><code><</code><code>description</code><code>>reverse a String</</code><code>description</code><code>></code>
<code> </code><code><</code><code>name</code><code>>reverse</</code><code>name</code><code>></code>
<code> </code><code>java.lang.String reverse(java.lang.String)</code>
<code> </code><code><!-- 去掉前後空格後傳回一個字元串的長度 --></code>
<code> </code><code><</code><code>description</code><code>>get a String'length</</code><code>description</code><code>></code>
<code> </code><code><</code><code>name</code><code>>len</</code><code>name</code><code>></code>
<code> </code><code>java.lang.Integer countStr(java.lang.String)</code>
<code> </code><code><!-- 格式化日期 --></code>
<code> </code><code><</code><code>description</code><code>>formate date or time</</code><code>description</code><code>></code>
<code> </code><code><</code><code>name</code><code>>format</</code><code>name</code><code>></code>
<code> </code><code>java.lang.String formatTime(java.util.Date,java.lang.String)</code>
<code> </code>
<code></</code><code>taglib</code><code>></code>
4.在web.xml中加入jsp-fig的配置
<code> </code><code><!-- 自定義EL表達式 --></code>
<code> </code><code><</code><code>jsp-config</code><code>></code>
<code> </code><code><</code><code>taglib</code><code>></code>
<code> </code><code><!-- 定義标簽的引用位址,JSP頁面時會用到 ,</code>
<code> </code><code>和tld檔案的位址保持一緻!但是tld檔案中可以省略不寫--></code>
<code> </code><code><</code><code>taglib-uri</code><code>>/myeltag</</code><code>taglib-uri</code><code>></code>
<code> </code><code><!-- 配置标簽的TLD檔案位址 --></code>
<code> </code><code><</code><code>taglib-location</code><code>>/WEB-INF/myel.tld</</code><code>taglib-location</code><code>></code>
<code> </code><code></</code><code>taglib</code><code>></code>
<code> </code><code></</code><code>jsp-config</code><code>></code>
5.JSP頁面中使用:注意事項如下:
<code><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%></code>
<code><%@ page import="com.hanchao.entity.User" %></code>
<code><%@ page import="java.util.Date" %></code>
<code><%@ taglib uri="/myeltag" prefix="m"%></code>
<code><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"></code>
<code><</code><code>html</code><code>></code>
<code><</code><code>head</code><code>></code>
<code><</code><code>meta</code> <code>http-equiv</code><code>=</code><code>"Content-Type"</code> <code>content</code><code>=</code><code>"text/html; charset=UTF-8"</code><code>></code>
<code><</code><code>title</code><code>>自定義EL表達式的簡單學習</</code><code>title</code><code>></code>
<code></</code><code>head</code><code>></code>
<code><</code><code>body</code><code>></code>
<code> </code><code><</code><code>h1</code><code>>EL表達式的簡單學習</</code><code>h1</code><code>></code>
<code> </code><code><%</code>
<code> </code><code>User user = new User();</code>
<code> </code><code>user.setName("admin1");</code>
<code> </code><code>request.setAttribute("user", user);</code>
<code> </code><code>pageContext.setAttribute("name"," 123456");</code>
<code> </code><code>application.setAttribute("date", new Date());</code>
<code> </code><code>%></code>
<code> </code><code><%--</code>
<code> </code><code>注意事項:</code>
<code> </code><code>1.checkUsername的值來源于tld檔案的fucntion标簽下的name的值!!</code>
<code> </code><code>2.myel的值與tld檔案的short-name标簽裡面的值貌似關系不大!</code>
<code> </code><code>我們隻需要在引入時定義prefix="xx",使用時${xx:}</code>
<code> </code>
<code> </code><code>${myel:checkUsername(user) }</code>
<code> </code><code>--%></code>
<code> </code>
<code> </code><code>${m:check(user) }</code>
<code> </code><code><</code><code>hr</code> <code>/></code>
<code> </code><code>${m:reverse(name) }</code>
<code> </code><code>${m:len(name) }</code>
<code> </code><code>${m:format(date,"yyyy-MM-dd") }</code>
<code> </code><code><%--</code>
<code> </code><code>參考文章:</code>
<code> </code><code>http://954151190.iteye.com/blog/626727</code>
<code> </code><code>http://blog.sina.com.cn/s/blog_780a632b0100wrnq.html</code>
<code> </code><code>--%></code>
<code></</code><code>body</code><code>></code>
<code></</code><code>html</code><code>></code>
本文轉自韓立偉 51CTO部落格,原文連結:http://blog.51cto.com/hanchaohan/1576557,如需轉載請自行聯系原作者