千家信息网

Spring MVC__自定义日期类型转换器

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,WEB层采用Spring MVC框架,将查询到的数据传递给APP端或客户端,这没啥,但是坑的是实体类中有日期类型的属性,但是你必须提前格式化好之后返回给它们。说真的,以前真没这样做过,之前都是一口气查
千家信息网最后更新 2025年02月01日Spring MVC__自定义日期类型转换器

WEB层采用Spring MVC框架,将查询到的数据传递给APP端或客户端,这没啥,但是坑的是实体类中有日期类型的属性,但是你必须提前格式化好之后返回给它们。说真的,以前真没这样做过,之前都是一口气查询到数据,然后在jsp页面上格式化,最后展示给用户。但是这次不同,这次我纯属操作数据,没有页面。直接从数据库拿数据给它们返数据、它们给我传数据我持久化数据,说到这里一个小问题就默默的来了。

首先把问题还原一下吧(这是一个数据导出功能),下图中用红框圈起来的都是直接从数据库中拿到的数据,但是不幸的是它们的对象中都包含日期类型的属性,然后我直接使用com.alibaba.fastjson.JSONObject将其转成json串返回给APP端和客户端,但是他们拿到的数据中时间类型的值都是时间戳,很不人性化,我也觉的很不人性化,就答应给他们格式化一下,不料,问题来了,格式化好之后然后又设置进去,结果是没用,没用,没用,重要的事情说三遍!

解决上面出现的问题,格式化对象中的日期类型的属性值,然后返回给请求者。记住:这个动作是在服务器端完成,并且实体类和数据表中的类型也都不变,照样是日期类型的。

第一步:首先自定义一个日期类型转换器(附代码)

 1 package com.tgsit.cjd.utils; 3 /** 4  * 日期类型转换器: 5  *         自动格式化对象中的日期类型 6  */ 8 import java.text.SimpleDateFormat; 9 import java.util.Date;10 import java.util.Locale;12 import net.sf.json.JsonConfig;13 import net.sf.json.processors.JsonValueProcessor;15 public class JsonDateValueProcessor implements JsonValueProcessor{17     private String format ="yyyy-MM-dd";  19     public JsonDateValueProcessor() {  20         super();  21     }    23     public JsonDateValueProcessor(String format) {  24         super();  25         this.format = format;  26     } 28     @Override  29     public Object processArrayValue(Object paramObject,  30             JsonConfig paramJsonConfig) {  31         return process(paramObject);  32     }  34     @Override  35     public Object processObjectValue(String paramString, Object paramObject,  36             JsonConfig paramJsonConfig) {  37         return process(paramObject);  38     }    41     private Object process(Object value){  42         if(value instanceof Date){    43             SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);    44             return sdf.format(value);  45         }    46         return value == null ? "" : value.toString();    47     }  49 }

第二步:如果项目中没有引入json-lib包,则引入

1 2     net.sf.json-lib3     json-lib4     2.45     jdk156

第三步:返回数据之前先使用日期类型转换器格式化日期数据

这里必须先创建JsonConfig对象,然后调用registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());方法将转换器注入进去,最后在调用JsonArray的formObject(数据,new JsonConfig())方法进行处理。

注意:这里还有个小坑,就是当你处理的是单纯的一个实体对象,则直接可以jsonObject.formObject(数据,new JsonConfig());

但是你处理的一个list集合数据时,则记得用jsonArray.formObject(数据,new JsonConfig());否则报错。

 1 @RequestMapping(value = "/exportInfo", method = RequestMethod.GET) 2     @ResponseBody 3     public String exportInfo(HttpServletResponse response) throws Exception{ 4         List exportInfoList = queryVoService.exportInfo(); 5         if(exportInfoList != null && exportInfoList.size() > 0){ 6             List result = new ArrayList(); 7             JsonResult model = null; 8             for (QueryVo queryVo : exportInfoList) { 9                 OwnerInfo ownerInfo = ownerInfoService.selectOwnerInfoByVIN(queryVo.getVin());10                 List morInfoList = mortgagerInfoService.selectByVIN(queryVo.getVin());11                 List traInfoList = transferInfoService.selectByVIN(queryVo.getVin());12                 model = new JsonResult();13                 model.setOwnerInfo(ownerInfo);14                 model.setMortgagerInfo(morInfoList);15                 model.setTransferInfo(traInfoList);16                 result.add(model);17             }18             //调用自定义日期类型转换器,自动格式化对象中的日期类型的字段值19             JsonConfig jsonConfig = new JsonConfig();  20             jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());21             return CGSConstants.returnJson(CGSConstants.SUCCESS,"导出成功",JSONArray.fromObject(result, jsonConfig));22         }23         return CGSConstants.returnJson(CGSConstants.SUCCESS,"尚无数据",null);24     }


数据 类型 日期 格式 对象 转换器 问题 实体 属性 处理 人性 客户 客户端 数据库 方法 页面 查询 不同 重要 成功 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全课挂科 江苏设备自动化整合系统软件开发 角色转服务器身上金币有没有限制 广东数据链软件开发优化价格 职工面临的网络安全风险有哪些 软件开发公司前景分析 全中文软件开发工具 服务器rac 宁河软件开发哪里的好 游戏服务器人太多卡住了怎么办 深圳市次元波动网络技术有限公司 为了吾王选哪个服务器 海信本部软件开发 企业工程技术人员常用的数据库 数据库中多对多联系的举例 深圳视觉软件开发 安卓报错找不到数据库 教育行业要不要做服务器 徐州信息化软件开发优势 下列属于网络安全设备的是 数据库原理与技术看什么书 注册一家网络技术公司地址 网络安全的保护制度是什么 文明广州网络安全 珠海工商银行软件开发总部食堂 国泰安数据库怎么用学校名称登录 深圳市星月网络技术有限公司 电商服务器租用 linux服务器外网访问 镇海游戏软件开发流程
0