背景:
自定义jstl function满足自己的需求,编码和时间格式化
实现:
1.自定义工具类:
public class UtilsTag {
public static String date(Long time) throws Exception {
// String vv = "" + value;
// long time = Long.valueOf(vv);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(time);
SimpleDateFormat dateformat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
String s = dateformat.format(c.getTime());
return s;
}
public static String encode(String txt) throws Exception {
return URLEncoder.encode(txt, "utf-8");
}
}
注意点:
a.static
2.自定义tld文件:
<?xml version="1.0" encoding="GBK"?>
<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>utils</short-name>
<!-- 定义第一个函数 -->
<function>
<!-- 定义第一个函数:reverse -->
<name>encode</name>
<!-- 定义函数处理类 -->
<function-class>com.pobaicn.wxp.web.UtilsTag</function-class>
<!-- 定义函数的对应方法 -->
<function-signature>
java.lang.String encode(java.lang.String)
</function-signature>
</function>
<function>
<name>date</name>
<function-class>com.pobaicn.wxp.web.UtilsTag</function-class>
<function-signature>
java.lang.String date(java.lang.Long)
</function-signature>
</function>
</taglib>
注意点:
a.类全路径
b.方法参数完全一致
3.部署:
web.xml中加入:
<jsp-config> <taglib> <taglib-uri>/utils</taglib-uri> <taglib-location>/WEB-INF/tlds/utils.tld</taglib-location> </taglib> </jsp-config>
4.使用:
<%@ taglib uri="/utils" prefix="utils"%>
<a href="${basePath}detail?id=${utils:encode(item.id)}">
[详情]
</a>
${utils:date(item.bdate)}
重要注意点:
写道
org.apache.jasper.JasperException: Method "cut" for function "cut" not found in class "com.linkrmb.util.UtilsTag"
当发生这个错误的时候就代表写的方法里面是基本类型,应该用封装类型,如:不应该用int而用Integer