全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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自定义类型转换器实现步骤  # 的是  # 都是  # 自定义  # 来了  # 象中  # 很不  # 客户端  # 我也  # 给我  # 是在  # 有个  # 当你  # 中有  # 说到  # 将其  # 这是一个  # 希望能  # 也都  # 做过  # 给他们 


相关文章: 常州企业网站制作公司,全国继续教育网怎么登录?  代刷网站制作软件,别人代刷火车票靠谱吗?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何通过可视化优化提升建站效果?  建站之星如何防范黑客攻击与数据泄露?  网站专业制作公司有哪些,做一个公司网站要多少钱?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何快速生成高效建站系统源代码?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  建站org新手必看:2024最新搭建流程与模板选择技巧  非常酷的网站设计制作软件,酷培ai教育官方网站?  建站之星24小时客服电话如何获取?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  如何在自有机房高效搭建专业网站?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  建站之星后台管理如何实现高效配置?  一键网站制作软件,义乌购一件代发流程?  电商网站制作公司有哪些,1688网是什么意思?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  高防服务器租用如何选择配置与防御等级?  nginx修改上传文件大小限制的方法  宝塔面板创建网站无法访问?如何快速排查修复?  制作网站的公司有哪些,做一个公司网站要多少钱?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  建站之星如何配置系统实现高效建站?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  如何基于云服务器快速搭建网站及云盘系统?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  企业微网站怎么做,公司网站和公众号有什么区别?  建站主机是什么?如何选择适合的建站主机?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  动图在线制作网站有哪些,滑动动图图集怎么做?  如何通过PHP快速构建高效问答网站功能?  如何选购建站域名与空间?自助平台全解析  网站制作新手教程,新手建设一个网站需要注意些什么?  ,在苏州找工作,上哪个网站比较好?  兔展官网 在线制作,怎样制作微信请帖?  青岛网站建设如何选择本地服务器?  制作网站外包平台,自动化接单网站有哪些?  如何通过NAT技术实现内网高效建站?  东莞专业制作网站的公司,东莞大学生网的网址是什么? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。