全网整合营销服务商

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

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


相关文章: 上海网站制作网站建设公司,建筑电工证网上查询系统入口?  建站之星代理费用多少?最新价格详情介绍  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  建站之星图片链接生成指南:自助建站与智能设计教程  深圳网站制作的公司有哪些,dido官方网站?  如何快速生成专业多端适配建站电话?  盘锦网站制作公司,盘锦大洼有多少5G网站?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  建站主机解析:虚拟主机配置与服务器选择指南  C#如何使用XPathNavigator高效查询XML  制作网站的公司有哪些,做一个公司网站要多少钱?  如何快速搭建响应式可视化网站?  C++时间戳转换成日期时间的步骤和示例代码  大连网站设计制作招聘信息,大连投诉网站有哪些?  长沙企业网站制作哪家好,长沙水业集团官方网站?  建站之星伪静态规则如何正确配置?  如何访问已购建站主机并解决登录问题?  建站之星好吗?新手能否轻松上手建站?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  山东网站制作公司有哪些,山东大源集团官网?  微信小程序 五星评分(包括半颗星评分)实例代码  如何快速登录WAP自助建站平台?  建站之星如何实现网站加密操作?  网站制作的步骤包括,正确网址格式怎么写?  如何破解联通资金短缺导致的基站建设难题?  建站168自助建站系统:快速模板定制与SEO优化指南  个人网站制作流程图片大全,个人网站如何注销?  建站主机选购指南与交易推荐:核心配置解析  如何快速查询网址的建站时间与历史轨迹?  建站之星安装模板失败:服务器环境不兼容?  建站VPS推荐:2025年高性能服务器配置指南  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  已有域名和空间如何搭建网站?  ,怎么用自己头像做动态表情包?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  临沂网站制作公司有哪些,临沂第四中学官网?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  如何在Windows 2008云服务器安全搭建网站?  免费视频制作网站,更新又快又好的免费电影网站?  魔方云NAT建站如何实现端口转发?  如何制作一个表白网站视频,关于勇敢表白的小标题?  如何使用Golang table-driven基准测试_多组数据测量函数效率  大连网站制作公司哪家好一点,大连买房网站哪个好?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  移民网站制作流程,怎么看加拿大移民官网?  建站主机核心功能解析:服务器选择与网站搭建流程指南  如何在服务器上三步完成建站并提升流量? 

您的项目需求

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