定义标签类,里面的方法必须是static静态的方法:
package com.hanchao.el;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.hanchao.entity.User;
/**
* 自定义EL表达式
* 注意事项:方法必须是static的静态方法★
* @author liweihan (liweihan@sohu-inc.com)
* @version 1.0 (2014年11月14日 下午2:20:57)
*/
public class MyElTag {
/**
* 用来验证用户名是否为admin
* [仅仅是测试,无意义]
* @param user实体类User
* @return
*
* 2014年11月14日 下午2:27:14
* liweihan
*/
public static boolean checkUsername(User user) {
if (user.getName().equals("admin")) {
return true;
}
return false;
}
/**
* 字符串反转
* @param str 需要反转的字符串
* @return
*
* 2014年11月14日 下午2:30:00
* liweihan
*/
public static String reverse(String str) {
return new StringBuffer(str).reverse().toString();
}
/**
* 返回字符串去掉前后空格的字符长度
* @param str
* @return
*
* 2014年11月14日 下午2:31:17
* liweihan
*/
public static int countStr(String str) {
return str.trim().length();
}
/**
* 格式化日期
* @param date日期
* @param pattern格式
* @return
*
* 2014年11月14日 下午3:33:33
* liweihan
*/
public static String formatTime(Date date ,String pattern) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
return simpleDateFormat.format(date);
}
}
在WEB-INF下面建立一个tld文件:<?xml version="1.0" encoding="UTF-8"?>
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">
1.0
el
http://so.tv.sohu.com/custom/functions
check isOrNot admin
check
com.hanchao.el.MyElTag
boolean checkUsername(com.hanchao.entity.User)
${el:check(user)}
reverse a String
reverse
com.hanchao.el.MyElTag
java.lang.String reverse(java.lang.String)
get a String'length
len
com.hanchao.el.MyElTag
java.lang.Integer countStr(java.lang.String)
formate date or time
format
com.hanchao.el.MyElTag
java.lang.String formatTime(java.util.Date,java.lang.String)
4.在web.xml中加入jsp-fig的配置
/myeltag
/WEB-INF/myel.tld
5.JSP页面中使用:注意事项如下:
html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
自定义EL表达式的简单学习EL表达式的简单学习
User user = new User();
user.setName("admin1");
request.setAttribute("user", user);
pageContext.setAttribute("name"," 123456");
application.setAttribute("date", new Date());
%>
注意事项:
1.checkUsername的值来源于tld文件的fucntion标签下的name的值!!
2.myel的值与tld文件的short-name标签里面的值貌似关系不大!
我们只需要在引入时定义prefix="xx",使用时${xx:}
${myel:checkUsername(user) }
--%>
${m:check(user) }
${m:reverse(name) }
${m:len(name) }
${m:format(date,"yyyy-MM-dd") }
参考文章:
http://954151190.iteye.com/blog/626727
http://blog.sina.com.cn/s/blog_780a632b0100wrnq.html
--%>