ExtJS日期格式转换与全局消息转换器配置详解

需积分: 50 14 下载量 46 浏览量 更新于2024-09-09 2 收藏 21KB DOCX 举报
在ExtJS 6中处理日期显示时,如果遇到从后台获取的Date类型数据以timestamp形式传输,如"2016-03-04T13:00:00.000+08:00"且采用UTC标准时,可能需要进行格式转换以适应前端显示。以下是一种优化的解决方案,即通过配置消息转换器来进行全局处理。 首先,确保在项目中引入Jackson库的必要依赖。在sso父项目的pom.xml文件中添加以下Jackson库版本: ```xml <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.6.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.6.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.6.3</version> </dependency> ``` 然后,在sso-web模块的pom.xml中,如果原项目使用了Spring 3.0的Jackson依赖,需要将其注释掉,并替换为Spring 4.0版本或更高版本的Jackson依赖: ```xml <!-- 这里注释掉Spring 3.0的Jackson依赖 --> <!-- <dependency> ... </dependency> --> <dependency> <!-- 使用Spring 4.0或更高版本的Jackson依赖 --> <groupId>com.fasterxml.jackson.core</groupId> <!-- ... --> </dependency> ``` 接下来,在Controller层,针对从后台返回的Page<UrlAccessResourceDTO>对象,可以通过自定义序列化器或者使用Jackson的@JsonFormat注解来处理日期字段。例如,如果你有一个名为`accessTime`的日期属性,可以这样做: ```java public class UrlAccessResourceDTO { private Date accessTime; // ...其他属性 @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ", timezone = "UTC") public Date getAccessTime() { return accessTime; } // 设置方法... } ``` 这样,当你序列化这个对象到JSON时,`accessTime`字段就会按照"yyyy-MM-dd'T'HH:mm:ss.SSSZ"的格式输出,适合前台展示。同时,由于@JsonFormat的timezone属性设置为"UTC",这会确保日期格式始终与UTC标准时保持一致。 通过这种方式,你可以确保ExtJS 6应用能够正确解析并显示来自后台的日期数据,无需在每个视图中单独处理。这无疑简化了代码管理,并提高了整体的可维护性。