`

Struts2.0自定义标签(时间标签)

阅读更多
最近项目中有这样的需求,需要将普通的时间格式转行成时间间隔模式,如:将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" />这样就可以了。是不是很简单呢。
4
0
分享到:
评论

相关推荐

    struts2.0标签使用源码

    了解Struts2.0标签的源码有助于我们更好地优化代码,例如,自定义标签以满足特定需求,或者在处理复杂数据结构时利用OGNL的灵活性。此外,还可以学习如何配置Struts2拦截器,结合标签库实现更强大的功能,如表单验证...

    Struts 2.0 UI标签实例程序

    - 通过主题和模板,可以自定义标签的外观,满足不同设计需求。 - 错误和验证可以通过Struts 2的内置机制处理,如使用`&lt;s:fielderror&gt;`标签显示错误信息。 在实际项目中,UI标签的使用极大地降低了页面开发的复杂性...

    struts2.0 教程(标签,XML配置,入门例子,帮助手册)

    总的来说,这个教程涵盖了Struts2.0的基础知识,从最基础的XML配置到复杂的Action链和自定义标签使用,都是学习和掌握Struts2.0必不可少的内容。通过深入学习和实践,你将能够熟练地运用Struts2.0构建高效、可维护的...

    struts 2.0 常用标签

    Struts 2.0 是一个基于MVC(Model-View-Controller)设计模式的Java Web...在"struts2.0常用标签.txt"文件中,你可能会找到更多关于这些标签的详细使用示例和解释,这将有助于进一步学习和掌握Struts 2.0 标签的用法。

    struts 2.0 自定义类型转换器 注册类型转换器 入门实例 简单实例

    Struts 2.0 是一个基于MVC设计模式的Java Web框架,它极大地简化了开发过程,特别是处理用户输入和数据转换。在Struts 2中,类型转换器(Type Converter)扮演着至关重要的角色,它负责将HTTP请求中的字符串数据转换...

    Struts2.0 入门教程+帮助手册+权威指南+配置文档+标签库+增删改查代码等.rar

    这个压缩包文件提供了丰富的资源,包括入门教程、帮助手册、权威指南、配置文档以及标签库和实际操作的增删改查代码,为学习和掌握Struts2.0提供了全面的支持。 首先,`Struts2.0中文教程.chm`和`Struts2入门2.pdf`...

    Struts_2.0从入门到精通

    Struts2.0提供了丰富的标签库,分为非UI标签和UI标签两大类。非UI标签主要用于控制流程和数据处理,例如用于URL重写,用于输出变量值。而UI标签则专注于页面元素的展示,如、等,它们能自动绑定模型属性,极大地简化...

    struts2.0标签详解

    Struts2.0是一个强大的Java Web开发框架,它极大地简化了MVC(Model-View-Controller)应用的构建。在Struts2中,标签库是其核心特性之一,提供了丰富的标签来帮助开发者更加便捷地创建动态网页。本文将深入探讨...

    Struts2.0学习系列 以及 Struts2.0安装包

    Struts2.0是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性高、结构清晰的Web应用程序的工具。这个"Struts2.0学习系列"旨在帮助初学者及进阶者深入理解并...

    struts2.0 经典书籍 源码 标签学习合集

    2. **自定义标签**:如何创建和使用自定义标签,以满足特定需求。 3. **标签的属性和用法**:每个标签都有其特定的属性和用法,熟悉这些可以帮助你更有效地构建视图。 通过这些资源,无论是初学者还是有经验的...

    struts2.0的标签学习资料

    以上只是Struts2.0标签库中的一部分,实际上还有更多标签如表单验证、标签自定义等,它们共同构成了强大的视图层支持,使得Struts2.0在Java Web开发中被广泛应用。掌握这些标签的使用,将极大提高开发效率和代码质量...

    struts2.0英文文档

    4. **强大的标签库**:Struts2.0 提供了丰富的标签库支持,如 `&lt;s:textfield&gt;`、`&lt;s:submit&gt;` 等,这些标签可以帮助开发者快速构建用户界面。 5. **国际化支持**:Struts2.0 内置了国际化(I18N)支持,可以通过配置...

    struts2.0标签教程详解资料

    六、自定义标签 如果内置的标签不能满足需求,开发者还可以创建自己的标签。这需要编写对应的Java类,并配置在struts.xml文件中,从而扩展Struts2的功能。 七、最佳实践 1. 在使用标签时,尽量避免直接操作HTML,...

    struts2.0开发的都市供求信息系统

    Struts2.0是一款强大的Java Web开发框架,它在MVC设计模式的基础上提供了一套完整的解决方案,用于构建可维护、可扩展的企业级应用程序。在这个"都市供求信息系统"项目中,我们能够深入理解并实践Struts2.0的核心...

    Struts2.0 入门学习资料

    4. 自定义标签库:Struts2.0提供了一套强大的自定义JSP标签,简化视图层的开发,如、等。 5. 国际化与本地化:Struts2.0内置了对多语言的支持,开发者可以通过资源文件轻松实现应用的国际化。 三、Struts2.0的配置...

    struts2.0标签库简介

    Struts2.0是Struts框架的一个重大升级版本,它在继承了Struts1.x的优良特性基础上,引入了大量的新功能和改进,特别是在标签库方面,提供了更为强大、灵活和易于使用的标签集,大大简化了Web应用的开发过程。...

    struts2.0中文教程

    其次,Struts2.0提供了强大的拦截器(Interceptor)机制,这是一系列预定义的或自定义的处理步骤,可以在Action执行前后进行干预,如日志记录、权限检查等。开发者可以通过自定义拦截器来实现特定的需求,增强框架的...

    tag struts2的自定义标签实例

    在Struts2框架中,自定义标签是扩展和优化应用功能的重要手段,它允许开发者创建符合业务逻辑且可重用的视图组件。本实例将深入探讨如何在Struts2中实现自定义标签,以及其背后的原理和步骤。 首先,自定义标签在...

    Struts 2.0 in Action

    第三部分“Building the View: Tags and Results”专注于如何利用Struts 2.0提供的标签库和结果处理机制来构建动态视图页面。 - **标签库**:Struts 2.0包含了一套丰富的标签库,这些标签不仅提供了HTML元素的快速...

Global site tag (gtag.js) - Google Analytics