定义标签类,里面的方法必须是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,如需转载请自行联系原作者