Spring MVC自定义日期类型转换器实例详解

WEB层采用Spring MVC框架,将查询到的数据传递给APP端或客户端,这没啥,但是坑的是实体类中有日期类型的属性,但是你必须提前格式化好之后返回给它们。说真的,以前真没这样做过,之前都是一口气查询到数据,然后在jsp页面上格式化,最后展示给用户。但是这次不同,这次我纯属操作数据,没有页面。直接从数据库拿数据给它们返数据、它们给我传数据我持久化数据,说到这里一个小问题就默默的来了。
首先把问题还原一下吧(这是一个数据导出功能),下图中用红框圈起来的都是直接从数据库中拿到的数据,但是不幸的是它们的对象中都包含日期类型的属性,然后我直接使用com.alibaba.fastjson.JSONObject将其转成json串返回给APP端和客户端,但是他们拿到的数据中时间类型的值都是时间戳,很不人性化,我也觉的很不人性化,就答应给他们格式化一下,不料,问题来了,格式化好之后然后又设置进去,结果是没用,没用,没用,重要的事情说三遍!
解决上面出现的问题,格式化对象中的日期类型的属性值,然后返回给请求者。记住:这个动作是在服务器端完成,并且实体类和数据表中的类型也都不变,照样是日期类型的。
第一步:首先自定义一个日期类型转换器(附代码)
package com.tgsit.cjd.utils;
/**
* 日期类型转换器:
* 自动格式化对象中的日期类型
*/
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
public class JsonDateValueProcessor implements JsonValueProcessor{
private String format ="yyyy-MM-dd";
public JsonDateValueProcessor() {
super();
}
public JsonDateValueProcessor(String format) {
super();
this.format = format;
}
@Override
public Object processArrayValue(Object paramObject,
JsonConfig paramJsonConfig) {
return process(paramObject);
}
@Override
public Object processObjectValue(String paramString, Object paramObject,
JsonConfig paramJsonConfig) {
return process(paramObject);
}
private Object process(Object value){
if(value instanceof Date){
SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);
return sdf.format(value);
}
return value == null ? "" : value.toString();
}
}
第二步:如果项目中没有引入json-lib包,则引入
<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency>
第三步:返回数据之前先使用日期类型转换器格式化日期数据
这里必须先创建JsonConfig对象,然后调用registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());方法将转换器注入进去,最后在调用JsonArray的formObject(数据,new JsonConfig())方法进行处理。
注意:这里还有个小坑,就是当你处理的是单纯的一个实体对象,则直接可以jsonObject.formObject(数据,new JsonConfig());
但是你处理的一个list集合数据时,则记得用jsonArray.formObject(数据,new JsonConfig());否则报错。
@RequestMapping(value = "/exportInfo", method = RequestMethod.GET)
@ResponseBody
public String exportInfo(HttpServletResponse response) throws Exception{
List<QueryVo> exportInfoList = queryVoService.exportInfo();
if(exportInfoList != null && exportInfoList.size() > 0){
List<Object> result = new ArrayList<Object>();
JsonResult model = null;
for (QueryVo queryVo : exportInfoList) {
OwnerInfo ownerInfo = ownerInfoService.selectOwnerInfoByVIN(queryVo.getVin());
List<MortgagerInfo> morInfoList = mortgagerInfoService.selectByVIN(queryVo.getVin());
List<TransferInfo> traInfoList = transferInfoService.selectByVIN(queryVo.getVin());
model = new JsonResult();
model.setOwnerInfo(ownerInfo);
model.setMortgagerInfo(morInfoList);
model.setTransferInfo(traInfoList);
result.add(model);
}
//调用自定义日期类型转换器,自动格式化对象中的日期类型的字段值
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
return CGSConstants.returnJson(CGSConstants.SUCCESS,"导出成功",JSONArray.fromObject(result, jsonConfig));
}
return CGSConstants.returnJson(CGSConstants.SUCCESS,"尚无数据",null);
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Spring
# MVC自定义日期类型转换器
# MVC日期转换器
# SpringMVC自定义类型转换器实现解析
# 详解SpringMVC的类型转换及验证方法
# 详解SpringMVC注解@initbinder解决类型转换问题
# 解决springmvc关于前台日期作为实体类对象参数类型转换错误的问题
# springMVC4之强大类型转换器实例解析
# SpringMVC实现自定义类型转换器
# SpringMVC对日期类型的转换示例
# Springmvc自定义类型转换器实现步骤
# 的是
# 都是
# 自定义
# 来了
# 象中
# 很不
# 客户端
# 我也
# 给我
# 是在
# 有个
# 当你
# 中有
# 说到
# 将其
# 这是一个
# 希望能
# 也都
# 做过
# 给他们
相关文章:
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
香港服务器租用费用高吗?如何避免常见误区?
C++如何使用std::optional?(处理可选值)
如何将凡科建站内容保存为本地文件?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
,网站推广常用方法?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
如何挑选高效建站主机与优质域名?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
建站之星会员如何解锁更多建站功能?
建站之星ASP如何实现CMS高效搭建与安全管理?
,在苏州找工作,上哪个网站比较好?
建站主机无法访问?如何排查域名与服务器问题
如何使用Golang table-driven基准测试_多组数据测量函数效率
如何在阿里云ECS服务器部署织梦CMS网站?
如何通过可视化优化提升建站效果?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
如何续费美橙建站之星域名及服务?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
如何快速配置高效服务器建站软件?
网站制作模板下载什么软件,ppt模板免费下载网站?
非常酷的网站设计制作软件,酷培ai教育官方网站?
建站之星在线客服如何快速接入解答?
Python lxml的etree和ElementTree有什么区别
如何快速生成橙子建站落地页链接?
北京网站制作公司哪家好一点,北京租房网站有哪些?
如何配置FTP站点权限与安全设置?
如何用西部建站助手快速创建专业网站?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
C#如何序列化对象为XML XmlSerializer用法
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
建站之星代理平台如何选择最佳方案?
PHP正则匹配日期和时间(时间戳转换)的实例代码
打鱼网站制作软件,波克捕鱼官方号怎么注册?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
制作电商网页,电商供应链怎么做?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何选择适配移动端的WAP自助建站平台?
高防服务器如何保障网站安全无虞?
如何在IIS中新建站点并配置端口与IP地址?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
如何快速搭建高效WAP手机网站吸引移动用户?
太原网站制作公司有哪些,网约车营运证查询官网?
如何通过WDCP绑定主域名及创建子域名站点?
如何用5美元大硬盘VPS安全高效搭建个人网站?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
如何获取开源自助建站系统免费下载链接?
大型企业网站制作流程,做网站需要注册公司吗?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
*请认真填写需求信息,我们会在24小时内与您取得联系。