`

Struts2 自定义全局转化器(Date与Timestamp)

 
阅读更多

采用struts2作为控制层时,客户端和服务器端对日期和时间戳的转换。在这里我们用全局转换器。

1.在源路径下建立xwork-conversion.properties文件,文件内容:

例子:

      java.util.Date=com...DateConverter(转化器类的路径)
      java.sql.Timestamp=com...TimestampConverter(转化器类的路径)

2.基于struts的自定义转换器继承StrutsTypeConverter,具体代码:

 

   日期型:

public class DateConverter extends StrutsTypeConverter {

	public Object convertFromString(Map map, String as[], Class class1) {
		return parseStringToDate(as[0]);
	}

	public String convertToString(Map map, Object obj) {
		String s = null;
		if (obj instanceof Date)
			s = dateTimeFormat.format(obj);
		return s;
	}

	private Date parseStringToDate(Object dateString) {
		Date date = null;
		if (dateString instanceof String)
			try {
				if(((String) dateString).trim().length()>10){
					date = dateTimeFormat.parse((String) dateString);// 日期解析不行,就用日期时间解析
				}else{
					date = dateFormat.parse((String) dateString);// 只是日期解析
				}
			} catch (ParseException p) {
				throw new XWorkException(
						"两种yyyy-MM-dd与yyyy-MM-dd HH:mm:ss都解析不了,时间参数为"
								+ dateString, p);
			}
		return date;
	}

	private static final SimpleDateFormat dateFormat = new SimpleDateFormat(
			"yyyy-MM-dd");

	private static final SimpleDateFormat dateTimeFormat = new SimpleDateFormat(
			"yyyy-MM-dd HH:mm:ss");

}

   时间戳

 

public class TimestampConverter extends StrutsTypeConverter {

    public Object convertFromString(Map map, String as[], Class class1) {
        return parseStringToTimestamp(as[0]);
    }

    public String convertToString(Map map, Object obj) {
        String s = null;
        if (obj instanceof Timestamp) {
            String s1 = obj.toString();
            s = s1.substring(0, 19);
        }
        return s;
    }

    private Timestamp parseStringToTimestamp(Object obj) {
        Timestamp timestamp = null;
        if (obj instanceof String)
            try {
                timestamp = Timestamp.valueOf((String) obj);
            }
            catch (Exception exception) {
                throw new XWorkException("Could not parse Timestamp", exception);
            }
        return timestamp;
    }
}

 

这样就实现了自定义的全局转换器。主要是重写convertFromString和convertToString这两方法。

分享到:
评论

相关推荐

    oracle中TIMESTAMP与DATE比较

    在Oracle数据库中,`TIMESTAMP`与`DATE`两种数据类型是用于存储日期和时间信息的关键组成部分,但它们之间存在显著的区别,特别是在处理时间和精度方面。本文将深入探讨这两种数据类型的特点,以及如何在实际应用中...

    有关java中的Date,String,Timestamp之间的转化问题

    Java 中的 Date、String 和 Timestamp 之间的转换问题 Java 中的日期和时间处理是编程中非常重要的一方面,Date、String 和 Timestamp 是三种常用的日期和时间类型,本文将详细介绍它们之间的转换问题。 一、获取...

    Timestamp与Date互转.docx

    Timestamp与Date互转 在Java编程中,Timestamp和Date是两个常用的时间类型,前者是数据库类型,而后者是Java.util包中的类。由于它们的类型不同,因此在实际开发中,经常需要将Timestamp和Date类型相互转换。下面将...

    spirng-boot 的时间类型(date、datetime、timestamp)的全局配置

    Spring Boot提供了一种方便的方式来全局配置日期和时间类型,包括date、datetime和timestamp,这使得与数据库交互时能够更加便捷地处理时间数据。本篇文章将深入探讨Spring Boot如何进行时间类型的全局配置,以及...

    Oracle date 和 timestamp 区别详解

    Oracle数据库中的DATE和TIMESTAMP是两种用于存储日期和时间信息的数据类型,它们在用途和精度上有显著的区别。 1. DATE数据类型: DATE类型是Oracle中最基础的日期时间数据类型,可以存储日期(年、月、日)和时间...

    Date、String、Timestamp之间的转换

    Date、String、Timestamp 之间的转换 Date、String、Timestamp 是 Java 中三个常用的日期和时间类,它们之间的转换是 Java 开发中经常遇到的问题。在本文中,我们将详细介绍 Date、String、Timestamp 之间的转换...

    oracle中TIMESTAMP与DATE比较.docx

    Oracle 中 TIMESTAMP 与 DATE 比较 Oracle 数据库中 TIMESTAMP 与 DATE 两个数据类型都是用于存储日期和时间的,但是它们之间有着很大的区别。在本文中,我们将详细比较这两个数据类型的特点、使用场景和优缺点。 ...

    java DATE与时间戳互化

    ### Java中DATE与时间戳互化的知识点解析 #### 一、时间戳的基本概念 时间戳在计算机领域中通常指的是从某一固定时刻起始所经过的毫秒数,这个固定时刻通常指的是1970年1月1日00:00:00 UTC。在Java中,时间戳主要...

    oracle中TIMESTAMP与DATE比较.pdf

    Oracle数据库中的`DATE`和`TIMESTAMP`是两种常见的日期和时间数据类型,它们在处理时间信息时有着不同的特性和用途。 首先,`DATE`数据类型是我们最常使用的,它可以存储日期和时间,包括世纪、年、月、日、小时、...

    一个long型与Date型时间转换工具

    例如,可能存在`TimeUtil.longToDate(long timestamp)`和`TimeUtil.dateToLong(Date date)`这样的方法,分别用于将long类型的时间戳转换为Date对象,以及将Date对象转换回long类型的时间戳。 在测试环境中,这个...

    date与long型转换工具

    4. **自定义转换工具**:描述中的"date与long型转换工具"可能包含了这样的功能,即提供一个用户友好的接口,用户输入日期和时间,工具会自动将其转换为对应的long型毫秒值;反之,也可以输入long型毫秒值,工具将其...

    java_时间戳与Date_相互转化相关函数.txt

    在Java编程语言中,时间戳(timestamp)与`java.util.Date`对象之间的转换是处理日期和时间数据时常见的需求。时间戳通常表示为从1970年1月1日午夜(UTC时间)到指定时刻之间的时间间隔,单位通常是毫秒。而`Date`类...

    在Java中String和Date、Timestamp之间的转换

    在Java编程中,处理日期和时间是常见的任务,涉及到的主要类有`java.util.Date`、`java.sql.Timestamp`以及它们与字符串之间的转换。本文将详细介绍如何在Java中进行String、Date和Timestamp之间的相互转换。 一、...

    struts2实现的文件上传下载,上传文件重命名(按时间戳)

    Struts2是一个强大的MVC框架,广泛应用于Java Web开发中,包括文件的上传与下载功能。在本项目中,我们关注的是如何利用Struts2实现文件上传并重命名(按时间戳),以及如何进行文件下载。 一、Struts2文件上传 在...

    Struts上传下载范例

    而在Struts 2中,可以使用`FileUploadInterceptor`拦截器或者自定义的Action来处理文件上传。Struts 2提供了更灵活的配置方式和更强大的功能,例如多文件上传和文件大小限制。 `Struts2-filesupdown.rar`可能是一个...

    oracle --timestamp

    根据提供的标题、描述、标签及部分内容,我们可以了解到这段文本主要涉及Oracle数据库中处理时间戳(`TIMESTAMP`)的相关操作。接下来将详细解释这些内容所包含的关键知识点。 ### 关键知识点解析 #### 1. `...

    ICMP timestamp请求响应漏洞 修复 Traceroute探测漏洞 修复 linux 7

    ICMP timestamp请求响应漏洞 修复 Traceroute探测漏洞 修复 使用firewall-cmd打开关闭防火墙与端口 linux 7 ICMP timestamp请求响应漏洞 修复 Traceroute探测漏洞 修复 使用firewall-cmd打开关闭防火墙与端口 linux ...

    Java.util.date与java.sql.date区别和转换

    类型转换 ( Java.util.date与java.sql.date区别和转换

    mysql时间类型对应的java类型1

    在Java中,虽然没有直接对应的类型,但通常可以使用`java.sql.Date`或者自定义类型来处理。 在Java中,我们可以通过以下方式在这些时间类型之间进行转换: - **从Java到MySQL**: - `java.util.Date`(Java的日期...

Global site tag (gtag.js) - Google Analytics