- 浏览: 113779 次
- 性别:
- 来自: 长沙
最新评论
-
leecyz:
不可分页全选
脚本实现全选GridView中的CheckBox -
agameplay:
呵呵,感谢,一直不知道会员定期过期检测,这下有法了,以前以为T ...
net中的定时器 -
raisun_1988:
yining159 写道这个跟.net有什么关系。。。
web ...
asp.net 页面弹出层,背景变灰不能操作 -
yining159:
这个跟.net有什么关系。。。
asp.net 页面弹出层,背景变灰不能操作 -
wm1688:
very good需要说明一下的是 在mymetadata文件 ...
Myeclipse中复制项目的注意事项
最近项目中有这样的需求,需要将普通的时间格式转行成时间间隔模式,如:将2009-07-01 10:16:14这种格式变成:昨天21:45:26 格式,我思前想后,为了显示的需要还是自定义个标签较合理。现将方法跟大家分享,算法不重要,重要的是自定义标签的流程。
我们分二步走
1.编写自定义标签类。
2. 创建taglib文件(.tld),编写标签声明。
第一步:
首先编写时间格式转换的方法:
- public static String getDisplayTime(Date date){
- Date nowDate=new Date();
- Calendar oldCalendar=Calendar.getInstance();
- Calendar nowCalendar=Calendar.getInstance();
- oldCalendar.setTime(date);
- nowCalendar.setTime(nowDate);
- int day=getDaysBetween(oldCalendar,nowCalendar);
- Long nowTime=nowDate.getTime();
- Long oldTime=date.getTime();
- Long time=nowTime-oldTime;
- if(time>60*60*1000){
- if(day==0){
- return new SimpleDateFormat("HH:mm:ss").format(date);
- }else if(day==1){
- return "昨天"+new SimpleDateFormat("HH:mm:ss").format(date);
- }else if(day==2){
- return "前天"+new SimpleDateFormat("HH:mm:ss").format(date);
- }else{
- return new SimpleDateFormat("yyyy-MM-dd").format(date);
- }
- }else if(time<60*1000){
- return "刚刚";
- }else{
- return (long)time/(60*1000)+"分钟前";
- }
- }
public static String getDisplayTime(Date date){ Date nowDate=new Date(); Calendar oldCalendar=Calendar.getInstance(); Calendar nowCalendar=Calendar.getInstance(); oldCalendar.setTime(date); nowCalendar.setTime(nowDate); int day=getDaysBetween(oldCalendar,nowCalendar); Long nowTime=nowDate.getTime(); Long oldTime=date.getTime(); Long time=nowTime-oldTime; if(time>60*60*1000){ if(day==0){ return new SimpleDateFormat("HH:mm:ss").format(date); }else if(day==1){ return "昨天"+new SimpleDateFormat("HH:mm:ss").format(date); }else if(day==2){ return "前天"+new SimpleDateFormat("HH:mm:ss").format(date); }else{ return new SimpleDateFormat("yyyy-MM-dd").format(date); } }else if(time<60*1000){ return "刚刚"; }else{ return (long)time/(60*1000)+"分钟前"; } }
这段代码很简单,相信大家一看便懂了。
下面是距离当前时间天数的方法:
- public class Times extends Component{
- private String name;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Times(ValueStack arg0) {
- super(arg0);
- }
- @Override
- public boolean start(Writer writer) {
- boolean result = super.start(writer);
- try {
- java.util.Date date = (java.util.Date) findValue(name);
- String str=DataTime.getDisplayTime(date);
- writer.write(str);
- } catch (IOException ex) {
- Logger.getLogger(Pages.class.getName()).log(Level.SEVERE, null, ex);
- }
- return result;
- }
- }
public class Times extends Component{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public Times(ValueStack arg0) { super(arg0); } @Override public boolean start(Writer writer) { boolean result = super.start(writer); try { java.util.Date date = (java.util.Date) findValue(name); String str=DataTime.getDisplayTime(date); writer.write(str); } catch (IOException ex) { Logger.getLogger(Pages.class.getName()).log(Level.SEVERE, null, ex); } return result; } }
这里是写一个方法调用这个算法返回一个值
- public class TimeTag extends ComponentTagSupport{
- private String name;
- public void setName(String name) {
- this.name = name;
- }
- @Override
- public Component getBean(ValueStack arg0, HttpServletRequest arg1, HttpServletResponse arg2) {
- return new Times(arg0);
- }
- //获得参数
- protected void populateParams() {
- super.populateParams();
- Times pages = (Times)component;
- pages.setName(name);
- }
- }
public class TimeTag extends ComponentTagSupport{ private String name; public void setName(String name) { this.name = name; } @Override public Component getBean(ValueStack arg0, HttpServletRequest arg1, HttpServletResponse arg2) { return new Times(arg0); } //获得参数 protected void populateParams() { super.populateParams(); Times pages = (Times)component; pages.setName(name); } }
这里继承ComponentTagSupport类是为了获得标签中的属性值,并包装成Component对象。继承Component类是为了从Struts2中的ValueStack中获得相对应的值。
第二步:建立smallfish.tld
- <?xml version="1.0" encoding="UTF-8"?>
- <!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>2.2.3</tlib-version>
- <jsp-version>1.2</jsp-version>
- <short-name>smallfish</short-name>
- <uri>/jzy</uri>
- <display-name>"smallfish Tags"</display-name>
- <tag>
- <name>times</name>
- <tag-class>com.common.tag.TimeTag</tag-class>
- <body-content>empty</body-content>
- <attribute>
- <name>name</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- </tag>
- </taglib>
<?xml version="1.0" encoding="UTF-8"?> <!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>2.2.3</tlib-version> <jsp-version>1.2</jsp-version> <short-name>smallfish</short-name> <uri>/jzy</uri> <display-name>"smallfish Tags"</display-name> <tag> <name>times</name> <tag-class>com.common.tag.TimeTag</tag-class> <body-content>empty</body-content> <attribute> <name>name</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
经过这些操作后,一个自己的标签就弄好了,tld文件可以扩充,在用的时候就像Struts2自带的标签一样,导入,页面显示时就用<smallfish:times name="time" />这样就可以了。是不是很简单呢。
学java和asp.net的朋友-免费的浪曦java视频和asp.net视频下载.
是全套的完整的。http://www.itpob.cn/thread-196-1-1.html
有需要的可以去下。
发表评论
-
JavaScript的语法
2010-03-28 19:06 7371. JavaScript的语法 - 区分大小写 - 弱类 ... -
JavaScript的起源
2010-03-28 18:58 7611.JavaScript的起源 - 1992年,Nombas ... -
Flex学习笔记__02
2010-03-18 14:23 7761. 下载Flex Adobe官方网站(http://w ... -
Flex学习笔记__01
2010-03-18 14:11 6751. Flex简介 1.1 什么是Flex Flex是一 ... -
tomcat集群和负载均衡的实现(session同步)
2010-03-15 14:24 596(一)环境说明 (1)服务器 ... -
DWR教程
2010-01-28 10:09 882这段时间较闲,研究了一番dwr.发现dwr实现的AJAX有些地 ... -
Myeclipse中复制项目的注意事项
2010-01-28 10:08 1653在项目上点右键,properties -> MyEcli ... -
struts2利用<s:fielderror/>等标签详细地控制错误消息输出格式
2010-01-28 10:07 1519<s:if test="hasFieldE ... -
MyEclipse不能启动?
2010-01-28 10:05 1341刚才群里有位朋友安装MyEclipse6.01 all in ... -
log4j:WARN Please initialize the log4j system properly 问题解决
2010-01-28 10:03 1349log4j:WARN No appenders could b ... -
使用Struts时遇到的问题
2010-01-25 17:19 575以下是本人初次使用Struts时遇到的问题:1.Tomcat启 ... -
mysql 1242 subquery returns more than 1 row
2010-01-25 17:13 1695【网上购物论坛】-IT泡吧![Www.itpb.Cn]网上购物 ... -
Hibernate:merge(),attachDirty(),attachClean()
2010-01-22 16:05 1120学java和asp.net的朋友-免 ... -
MonoRail学习笔记十七:TransformFilter的使用
2009-04-27 19:23 525TransformFilter是用来转换用的,比如把页面所有 ... -
ExtJS学习笔记1--onReady
2009-05-08 11:44 798ExtJS学习笔记1--onReady 这几天在学习Ex ... -
ExtJs学习笔记(8)_TabPanel的用法
2009-05-08 14:29 805ExtJs学习笔记(8)_TabPanel的用法 啥 ... -
ExtJs学习笔记(17)_table布局
2009-05-08 14:36 809ExtJs学习笔记(17)_table布局 tabl ... -
ExtJs学习笔记(16)_Form布局
2009-05-08 14:37 851ExtJs学习笔记(16)_Form布局 这是最重要的一个 ... -
《ExtJS2.0实用简明教程》之ExtJS简介
2009-05-25 09:29 0ExtJS是一个Ajax框架,是一个用javascript写 ... -
《ExtJS2.0实用简明教程》之ExtJS简介
2009-05-25 09:29 1039ExtJS是一个Ajax框架,是一个用javascript写 ...
相关推荐
哦 忘记介绍了, 当中还有本人写的几个自定义标签:com.light.framework.tag 自定义标签的帮助类:com.light.framework.tagAssistant 还有登录拦截器:com.light.framework.interceptor 字符集过滤器:...
<%@ taglib prefix="s" uri="/struts-tags" %> 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. <s:a href=""></s:a>-----超链接,类似于html里的<a></a> 3. ...
HTML参考手册 css2.0中文手册 J2EE全实例教程 Javascript参考手册 Jsp帮助文档 JSTL中英文对照版 servlet api 中文版chm格式 JAVA设计模式 Hibernate 2.1 中文参考手册 EL表达式 Tomcat中文...struts2.0中文帮助手册
12.1.2 Struts 2.0与Struts 1.x框架的区别 215 12.2 MyEclipse创建基于Struts 2.0框架的项目 215 12.2.1 下载Struts 2.0开发包 216 12.2.2 创建Struts 2.0项目 216 12.2.3 配置Struts 2.0项目 217 12.2.4 创建Struts...
JSP宝典PDF电子版下载,JSP宝典全书比较全面地介绍了有关JSP的相关知识,并通过大量实例,循序渐进地教会读者如何构架和开发JSP动态网站、自定义标签开发和标准标签库JSTL使用、以及Ajax等Web2.0新特性。在教程的...
JSP宝典PDF电子版下载,JSP宝典全书比较全面地介绍了有关JSP的相关知识,并通过大量实例,循序渐进地教会读者如何构架和开发JSP动态网站、自定义标签开发和标准标签库JSTL使用、以及Ajax等Web2.0新特性。在教程的...
自定义标签内容样式或使用系统提供的内容样式都非常方便。 ·尽量减少对第三方类库的依赖,减小发布包体积。 ·使用fckeditor代替原有编辑器。 ·文章内容不入库,减少数据库体积,程序运行效率更高。
本书比较全面地介绍了有关JSP的相关知识,并通过大量实例循序渐进地阐明如何构架和开发JSP动态网站、自定义标签开发和标准标签库JSTL使用以及Ajax等Web2.0新特性。 本书首先介绍了JSP的概念和特征,使读者对JSP先...
15.4. Struts 15.4.1. ContextLoaderPlugin 15.4.2. ActionSupport 类 15.5. Tapestry 15.5.1. 注入 Spring 托管的 beans 15.6. WebWork 15.7. 更多资源 16. Portlet MVC框架 16.1. 介绍 16.1.1. 控制器 - ...
* 函数库的使用 * 自定义函数库 * 定义类和方法(必须定义为public static) * 编写tld文件,并且将tld文件放到WEB-INF下 * 在jsp中使用taglib指令引入自定义标签库 * 直接使用即可 <br> ...
第 8章 STRUTS2标签..............................................................................................................................................54 第 9章 表达式OGNL......................
31. Custom Tags I (自定义标签I) 32. Java Standard Tag Library (标准标签库) 33. Expression Language(表达式语言) 34. Expression Language(表达式语言) 35. 使用Java WEB技术编写网页QQ J2EE 框架...
Struts2框架介绍、工作原理与架构分析、6大配置文件分析使用通配符定义action、动态方法调用,ActionContext及ServletActionContext...默认拦截器分析、自定义拦截器、OGNL表达式、值栈分析及操作、标签、 json使用。
\ch10\* 第10章 创建自定义标签所有例程代码 \ch11\* 第11章 使用Struts控制器简化MVC开发所有例程代码 \ch12\* 第12章 使用Servlet2.4过滤器和监听器所有例程代码 \ch13\* 第13章 数据库访问:JDBC所有例程代码...
80 5.6.9 config对象 80 5.7 JSP自定义标签 81 5.8 小结 84 第6章 XML、CSS和XSLT 85 6.1 XML 85 6.1.1 什么是XML 85 6.1.2 XML的产生 85 6.1.3 XML的用途 86 6.1.4 XML元素 87 6.1.5 XML属性 87 6.1.6 XML语法规则 ...
Struts2.0..263 第一章 MVC Model.........................263 第二章 Struts Basic264 第三章 Action,Result & Struts2 Tag Library......................267 第四章 Data Transfer & Type Converter..273 第五...
Struts2.0..263 第一章 MVC Model.........................263 第二章 Struts Basic264 第三章 Action,Result & Struts2 Tag Library......................267 第四章 Data Transfer & Type Converter..273 第五...
15.4. Struts 15.4.1. ContextLoaderPlugin 15.4.2. ActionSupport 类 15.5. Tapestry 15.5.1. 注入 Spring 托管的 beans 15.6. WebWork 15.7. 更多资源 16. Portlet MVC框架 16.1. 介绍 16.1.1. 控制器 - ...
2. Spring 2.0和 2.5的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件...