jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题
2017-12-25 15:55
525 查看
jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题
之前在项目中根据需求,需要自定义标签,经过查询w3c文档,自己也踩了一些坑,特此记录自定义标签的步骤,下面就以我之前的一个例子中的定义一个时间转换标签为例:github地址1. 在项目中src中建一个com.xiangmuming.tags包,里面建一个类DateTag.java,内容为:
此类的内容参考地址,在引入的时候也可以参考此文章在web.xml中配置一下标签的路径,这里我没有配置这个。
/** * 用于页面 jstl时间格式化 */ public class DateTag extends TagSupport { private static final long serialVersionUID = 6464168398214506236L; private String value; public int doStartTag() throws JspException { String vv = "" + value; try { SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); String s = dateformat.format(new Date(Long.valueOf(vv+"000"))); pageContext.getOut().write(s); } catch (Exception e) { e.printStackTrace(); } return super.doStartTag(); } public void setValue(String value) { this.value = value; } }
注:在编写表现对应的实现类是,需要重载BodyTagSupporrt类的几个方法:doStartTag(), setBodyContent(), doInitBody(), doAfterBody(), doEndTag(); 参考地址
它们执行顺序如下:doStartTag()→doInitBody()→setBodyContent()→doAfterBody()→doEndTag()
doStartTag()方法可返回EVAL_BODY_INCLUDE或SKIP_BODY, 如果返回EVAL_BODY_INCLUDE则继续执行; 如果返回SKIP_BODY则接下来的doInitBody(),setBodyContent(), doAfterBody()三个方法不会被执行, 而直接执行doEndTag()方法。 setBodyContent()方法用于设置标签体内容,如果在此之前要作一些初始化工作,则在doInitBody()方法中完成。 标签体内容执行完后,会调用doAfterBody()方法,此方法可返回EVAL_BODY_TAG, SKIP_BODY,EVAL_PAGE或SKIP_PAGE。 如果返回EVAL_BODY_TAG则会再次设置标签体内容,直到返回SKIP_BODY; 如果返回EVAL_PAGE则标签体执行完后会继续执行JSP页面中接下来的部分; 如果返回SKIP_PAGE,则JSP页面的后续内容将不再执行。
2. 在WEB-INF文件夹下建一个mytags.tld文件(文件名可以自定义),作为标签的配置文件,内容如下: <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>1.0</tlib-version><!-- 代表标签库的版本号 --> <jsp-version>1.2</jsp-version><!-- 代表jsp的版本 --> <short-name>mt</short-name><!-- 你的标签库的简称 --> <uri>http://xiangmuming.com/mytags</uri><!-- 你标签库的引用uri --> <tag> <name>date</name><!-- 你定义的标签的名称 --> <tag-class>com.xiangmuming.tags.DateTag</tag-class><!-- 对应的标签处理程序:包名+类名 --> <attribute> <name>value</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <!--<body-content>JSP</body-content> --><!-- 标签体内容的格式 --> </tag> </taglib> 3. 在jsp页面使用,页面的所有内容如下: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> //引入自定义的标签库 <%@ taglib prefix="tmpl" uri="http://xinxianggov.com/mytags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Title</title> </head> <body> <tmpl:date value="${time }"></tmpl:date> </body> </html> //其中${ time }是一个int类型的时间戳的变量
关于jstl库中的日期标签的使用请参考
注:本文是结合网上的资料及自己的总结所得,如需转载请注明http://www.cnblogs.com/zhuchenglin/p/8109787.html
相关文章推荐
- 解决在jsp页面用jstl标签的forEach循环里头格式化时间
- 通过引入SiteMesh的JSP标签库,解决Freemarker与SiteMesh整合时,自定义SiteMesh标签的问题
- JSP页面中使用JSTL标签出现无法解析问题解决办法
- jsp 页面链接(注解:指a标签的超链接)乱码问题及其解决办法
- 解决Eclipse和myeclipse在进行 html,jsp等 页面编辑时,自动格式化变丑的问题
- jsp 页面链接(注解:指a标签的超链接)乱码问题及其解决办法
- jsp页面中如何将时间戳字符串格式化为时间标签
- JSP页面中使用JSTL标签出现无法解析问题解决办法
- 解决jsp中input标签读取时间格式实例显示到页面
- springmvc:jsp fmt标签格式化Date时间,格式化后可以用于页面展示或者提交给后台
- jsp页面标签时间格式化
- 解决Eclipse和myeclipse在进行 html,jsp等 页面编辑时,自动格式化问题
- jsp页面中对时间戳字符串格式化为时间标签
- JSP页面中使用JSTL标签出现无法解析问题解决办法
- JSP页面中使用JSTL标签出现无法解析问题解决办法
- jsp页面定义的struts2 set标签问题 怎么解决?
- 解决Eclipse和myeclipse在进行 html,jsp等 页面编辑时,自动格式化变丑的问题
- jsp 页面链接(注解:指a标签的超链接)乱码问题及其解决办法
- jsp页面input标签中时间日期回显的格式问题&在input标签中指定时间的格式
- 通过引入SiteMesh的JSP标签库,解决Freemarker与SiteMesh整合时,自定义SiteMesh标签的问题