趁着如今睡不着抓紧 把原来想写的都写了吧、、 咳咳 java
写jsp不可避免的会用到jstl,由于这个公司也没怎么用过velocity等模板,因此jstl就相对来讲是比较简单的写法了。 web
页面有须要时间格式化的东西,看到代码中,以前他们作的是一个model类从索引或者缓存中获取到数据后有一个时间格式 缓存
为long型, 而页面上显然是不可能以long型展现给用户的,以前的写法是获取model以后写个for循环把这个long型转成想要展现的类型 jsp
存入list,而后再页面跟随这这个model进行获取,显然这种作法非常不可取的,一旦某个环节出了问题,小点说就窜行了, ui
至于大问题、、咳咳 我就说不许了。。。。 this
jstl有不少时间格式化的标签,但貌似只是支持date型的,更多的我也没去细搜,不过貌似就是不支持long型,其实long型对咱们也是颇有 spa
用的,好比说按时间排序、、很方即是不是、 在jstl里就比较麻烦了,好在jstl能够写自定义标签,写这篇文章的目的其实也不仅是介绍这个 code
long型时间格式化问题,主要仍是怎么写自定义标签、、咳咳很少说废话了直接上代码吧 orm
package com.controller.touch; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.TagSupport; /** * 用于页面jstl时间格式化 * @author jiangnan * */ public class JSTLDateUtils extends TagSupport { /** * */ private static final long serialVersionUID = -3354015192721342312L; private String value; public void setValue(String value) { this.value = value; } private String parttern; public void setValue(String parttern ) { this.value = parttern ; } public int doStartTag() throws JspException{ String vv = String.valueOf(value); long time = Long.valueOf(vv); Calendar c = Calendar.getInstance(); c.setTimeInMillis(time); SimpleDateFormat dateformat =new SimpleDateFormat(parttern); String s = dateformat.format(c.getTime()); try { pageContext.getOut().write(s); } catch (IOException e) { e.printStackTrace(); } return super.doStartTag(); } public static void main(String[] args) { long a =1332744845078l; long time = Long.valueOf(a); Calendar c = Calendar.getInstance(); c.setTimeInMillis(time); SimpleDateFormat dateformat =new SimpleDateFormat("MM-dd HH:mm"); String s = dateformat.format(c.getTime()); System.out.println(s); } }
在web.xml 中要添加这些东西: xml
1 <!-- 自定义JSTL时间格式化 --> 2 <jsp-config> 3 <taglib> 4 <taglib-uri>/tags</taglib-uri> 5 <taglib-location>/WEB-INF/datetag.tld</taglib-location> 6 </taglib> 7 </jsp-config>
datetag.tld则按下面书写
1 <?xml version="1.0" encoding="UTF-8"?> 2 <taglib> 3 <tlib-version>1.1</tlib-version> 4 <jsp-version>1.2</jsp-version> 5 <short-name>date</short-name>//这里说明一下,开始我也没加这个东西,可是发现resin疯狂的报错啊,后来才发现resin对tld文件作严格语法检查,因此必定要加上这个 6 <tag> 7 <name>date</name> 8 <tag-class>com.controller.touch.JSTLDateUtils</tag-class> 9 <attribute> 10 <name>value</name> 11 <required>true</required> 12 <rtexprvalue>true</rtexprvalue> 13 </attribute> 14 <attribute> 15 <name>parttern</name> 16 <required>true</required> 17 <rtexprvalue>true</rtexprvalue> 18 </attribute> 19 </tag> 20 </taglib>
最后jsp中就可使用以下标签进行写代码了
<date:date value="${time}" pattern="yyyy-MM-dd HH:mm:ss"/>
别忘记在页头加上引用 <%@ taglib uri="/tags" prefix="date"%> 不然会报错哦
若是想使用多个自定义的标签能够编写多个类,而后再tld中进行添加对用的tag就能够啦