自定义一个EL函数 一般就是一下几个步骤,顺便提供一个工作常用的 案例:
1、编写一个java类,并编写一个静态方法(必需是静态方法),如下所示:
public class DateTag { private final static Logger logger = LogManager.getLogger(DateTag.class); private static final long serialVersionUID = -2312310581852395045L; public static String dateFormat(String date,String format) { String dateStr=""; if(StringUtils.isBlank(format)){ format="yyyy-MM-dd HH:mm"; } if(StringUtils.isNotBlank(date) && !"null".equals(date.toLowerCase())){ Long date_; try { date_ = Long.parseLong(date); Date date2 = new Date(date_); SimpleDateFormat df = new SimpleDateFormat(format); dateStr = df.format(date2); } catch (Exception e){ logger.error(e); } } return dateStr; } }
2、创建一个标签描述文件(tld)文件,其就是一个xml文件,一般放在WEB-INF下,创建的文件如下:
<?xml version="1.0" encoding="UTF-8"?> <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>jnb</short-name> <uri>http://java.ding.com/jsp/jstl/date/functions</uri> <function> <description>函数描述:第一个参数是long类型的时间,第二个是时间格式</description>
<name>dateFormat</name>
<function-class>com.mall.core.utils.DateTag</function-class>
<function-signature>java.lang.String dateFormat(java.lang.String,java.lang.String)</function-signature>
</function>
</taglib>
3、在web.xml中注册该tld文件(</web-app>标签内)
<jsp-config> <taglib> <taglib-uri>http://java.ding.com/jsp/jstl/date/functions</taglib-uri><!--与tld中uri一致就可-->
<taglib-location>/WEB-INF/tld/mytld.tld</taglib-location><!--tld所在的位置--> </taglib>
</jsp-config>
4、在JSP中使用该函数
先利用taglib指令引入该tld
<%@ taglib prefix="jnb" uri="http://java.ding.com/jsp/jstl/date/functions" %>
用以下方式代码来调用
${jnb:dateFormat(mapResult.dateBegin,"MM-dd")}