宝哥软件园

Spring MVC自定义日期类型转换器示例的详细说明

编辑:宝哥软件园 来源:互联网 时间:2021-09-05

Spring MVC自定义日期类型转换器示例的详细说明

WEB层采用Spring MVC框架,将查询到的数据传输到APP或客户端。这没什么,但是实体类中日期类型的属性被坑了,但是你必须提前格式化并返回给他们。老实说,我以前从来没有这样做过。以前,我总是一口气搜索完数据,然后在jsp页面上格式化,最后展示给用户。但这次不一样了。这次我只操作数据,没有页面。直接从数据库中获取数据并返回给他们。他们给我发送数据,我保存数据。在这里,一个小问题悄然而至。

首先,让我们恢复问题(这是一个数据导出功能)。下图中,红色方框中包含的所有数据都是直接从数据库中获取的,但遗憾的是,它们的对象都包含日期类型属性,然后我直接使用com . Alibaba . fastjson . json object将其转换为JSON字符串,返回给APP和客户端。但是,他们得到的数据中时间类型的值都是时间戳,非常不人道,我也觉得非常不人道,所以答应格式化。没想到问题来了,格式化后又设置了,结果没用,没用,没用,重要的事情说了三遍!

要解决上述问题,请格式化对象中日期类型的属性值,并将其返回给请求者。请记住:此操作是在服务器端完成的,并且实体类和数据表中的类型是相同的,它们仍然是日期类型。

第一步:首先,定制一个日期类型转换器(带代码)

package com . tgsit . CJD . utils;/* * *日期类型转换器:*自动格式化对象中的日期类型*/import Java . text . simpledateformat;导入Java . util . date;导入Java . util . locale;导入net . SF . JSON . jsonconfig;导入net . SF . JSON . processors . jsonvalueprocessor;公共类JsonDateValueProcessor实现JsonValueProcessor { private String format=' yyyy-MM-DD ';public JsonDateValueProcessor(){ super();} public JsonDateValueProcessor(字符串格式){ super();this.format=format} @ Override public Object processArrayValue(Object param Object,JsonConfig paramJsonConfig){ return process(param Object);} @ Override public Object processObjectValue(String paramString,Object paramObject,JsonConfig paramsonconfig){ return process(paramsobject);}私有对象进程(对象值){ if(日期的值实例){ SimpleDateformat SDF=new SimpleDateformat(格式,区域设置。中国);返回sdf.format(值);}返回值==null?' : value . ToString();}}第二步:如果项目中没有引入json-lib包,那就引入

dependency group idnet . SF . JSON-lib/group id artifactidjonson-lib/artifactidversion 2.4/version classifier JDK 15/classifier/dependency步骤3:在返回数据之前用日期类型转换器格式化日期数据

在这里,必须首先创建JsonConfig对象,然后调用RegisterJSonValueProcessor(date。类,新的JSondateValueProcessor());方法将转换器注入其中,最后调用JsonArray的formObject (data,new JsonConfig())方法进行处理。

注意:这里还有一个小坑,就是在处理简单的实体对象时,可以直接使用jsonObject.formObject (data,new JsonConfig());

但是在处理一个列表集合数据的时候,记得使用jsonArray.formObject (data,new JsonConfig());否则,会报告错误。

@RequestMapping(值='/exportInfo ',方法=RequestMethod .GET) @ResponseBody公共字符串导出信息(httpersvletresponse响应)引发异常{ ListQueryVo export info list=queryvoeservice。导出信息();if(exportInfoList!=null exportinfolist。大小(0){ ListObject结果=new ArrayListObject();JsonResult模型=nullfor(查询VO查询VO : exportInfoList){ OwnerInfo OwnerInfo=ownerinfoservice。selectownerinfobyvin(查询VO。getvin());list mortgagerinfo moril polist=mortgagerinfoservice。selectbyvin(queryvo。getvin());list transfer info trainifolist=transfer infoservice。selectbyvin(查询VO。getvin());model=new JsonResult();模特。setownerinfo(ownerInfo);模特。setmortgerinfo(MoriFolist);模特。settransferinfo(TrainFolist);result.add(模型);} //调用自定义日期类型转换器,自动格式化对象中的日期类型的字段值JsonConfig JsonConfig=new JsonConfig();jsonconfig。registerjsonvalueprocessor(日期。类,新的JsonDateValueProcessor());返回cgs常数。returnjson(cgs常量."成功,"导出成功,JSONArray.fromObject(result,jsonConfig));}返回cgs常数。returnjson(cgs常量."成功,"尚无数据,null);}感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多资讯
游戏推荐
更多+