最近项目中有这样的需求,需要将普通的时间格式转行成时间间隔模式,如:将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 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);
}
}
这里继承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>
经过这些操作后,一个自己的标签就弄好了,tld文件可以扩充,在用的时候就像Struts2自带的标签一样,导入,页面显示时就用<smallfish:times name="time" />这样就可以了。是不是很简单呢。
分享到:
- 2009-07-26 10:16
- 浏览 1071
- 评论(1)
- 论坛回复 / 浏览 (-1 / 3182)
- 查看更多
相关推荐
9. **Plug-in架构**:Struts1.x具有强大的插件扩展能力,允许开发者添加自定义的拦截器(Interceptor)、标签库等,以满足项目特殊需求。 10. **预定义的结果类型**:Struts1.x定义了一些预设的Action结果类型,如...
Struts1.x标签库是基于JSP自定义标签的集合,它们与标准JSP标签相比,更具有针对性和易用性,特别是对于处理表单、链接、消息显示等常见Web交互场景。这些标签与Struts的动作框架紧密集成,使得开发者可以更容易地...
然而,随着时间的推移,Struts 1.x 因为其局限性和安全问题,逐渐被Struts 2 和其他现代框架如Spring MVC、Play Framework等取代。尽管如此,了解 Struts 1.x 的基础知识对于理解Java Web开发的历史和演变仍然非常有...
Struts1.x是一款经典的Java Web框架,由Apache软件基金会开发并维护。它是MVC(Model-View-Controller)设计模式的实现,极大地简化了Java Web应用程序的开发过程。本资源集合包含了所有最新的Struts1.x项目应用,为...
4. **自定义标签的开发流程**: 开发自定义Struts标签通常涉及以下步骤: - 创建一个继承自`org.apache.struts.taglib.TagSupport`或`org.apache.struts.taglib.logic.LogicalTagSupport`的Java类。 - 实现必要的...
1. **Struts2核心库**:`struts2-core.jar`是框架的基础,包含了Action、Interceptor、Result等核心概念的实现,以及Struts标签库和配置解析器。 2. **插件库**:如`struts2-convention-plugin.jar`用于自动配置...
这个压缩包"struts2.x所有包及配置文件"包含了Struts2框架的核心组件、扩展和配置文件,用于构建和管理Java web应用。 1. **核心组件**: - `struts2-core.jar`:这是Struts2框架的基础,包含了Action、Result、...
同时,通过自定义标签可以进一步扩展Struts的功能,满足特定项目的需求。 总的来说,Struts1.x的标签库是其强大视图层功能的关键,它降低了开发者的工作难度,提高了开发效率,并促进了代码的标准化。尽管Struts1.x...
### Struts1.x 标签详解 #### 一、引言 Struts 是 Apache Jakarta 的一个著名开源项目,旨在为构建基于 Java 的 Web 应用程序提供一个强大的框架。Struts 提供了大量的标签来帮助开发者简化开发过程。本文将详细...
通过学习这些代码,你可以深入理解Struts2.x的核心概念和实际应用,包括MVC模式、拦截器、OGNL表达式、自定义标签和验证机制。这些知识点对于任何想要掌握Struts2.x框架的开发者来说都是至关重要的。通过实践和测试...
Struts2和Struts1.x都是Java Web开发中流行的MVC框架,它们分别代表了不同阶段的Web开发理念。在本文中,我们将深入探讨这两者之间的差异,以便开发者能够更好地理解它们各自的优缺点,以及为什么Struts2被视为...
6. **JSP和Taglib**:Struts1.x提供了一系列自定义标签库,如logic、bean、html等,使得在JSP页面中编写控制逻辑变得简单。 7. **国际化和本地化**:Struts1.x支持多语言,通过资源文件实现不同地区的文本和日期...
7. **拦截器(Plug-ins)**:虽然Struts1.x的拦截器功能相对较弱,但仍然可以通过自定义的ActionProcessor或Plug-in实现类似的功能,如登录验证、权限检查等。 8. **模型驱动**:Struts1.x还支持模型驱动开发,...
- 在Struts1.x中使用Freemarker,可能需要处理一些特定的类型转换问题,例如日期、自定义对象等。 通过以上知识点的介绍,我们对Struts1.x整合Freemarker有了全面的理解。在实际开发中,这样的整合可以显著提高...
Struts1.x是一个经典的Java Web开发框架,由Apache软件基金会维护。它的主要目的是为了简化MVC(模型-视图-控制器)架构的实现,提高Web应用程序的可维护性和可扩展性。验证框架是Struts1.x的一个重要组成部分,用于...
以下是对Struts1.x自定义异常处理的详细讲解。 首先,Struts1.x框架默认的异常处理方式是通过`struts-config.xml`配置文件中的`<global-exceptions>`标签来定义全局异常处理。在这个标签内,你可以声明一个或多个...
Struts 1.x 提供了丰富的标签库以及配置文件支持,使开发者能够快速构建企业级应用。 #### 二、Struts 配置文件详解 **1. `struts-config.xml` 文件解析** `struts-config.xml` 是 Struts 1.x 中的核心配置文件,...
7. **自定义标签库(Tags)**:Struts 2提供了丰富的自定义JSP标签,简化视图层的开发。本章可能涉及自定义标签的开发和使用,以及如何将它们集成到现有的应用中。 8. **插件系统**:Struts 2拥有强大的插件架构,...
Struts1.x是一个经典的Java Web开发框架,它极大地简化了MVC(模型-视图-控制器)模式的应用程序开发。而Common-Validator是Apache Commons项目的一部分,它为Struts1.x提供了一种强大的数据验证机制。这个框架允许...