• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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{
        ListQueryVo> exportInfoList = queryVoService.exportInfo();
        if(exportInfoList != null  exportInfoList.size() > 0){
          ListObject> result = new ArrayListObject>();
          JsonResult model = null;
          for (QueryVo queryVo : exportInfoList) {
            OwnerInfo ownerInfo = ownerInfoService.selectOwnerInfoByVIN(queryVo.getVin());
            ListMortgagerInfo> morInfoList = mortgagerInfoService.selectByVIN(queryVo.getVin());
            ListTransferInfo> 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);
      }

     感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    您可能感兴趣的文章:
    • SpringMVC自定义类型转换器实现解析
    • 详解SpringMVC的类型转换及验证方法
    • 详解SpringMVC注解@initbinder解决类型转换问题
    • 解决springmvc关于前台日期作为实体类对象参数类型转换错误的问题
    • springMVC4之强大类型转换器实例解析
    • SpringMVC实现自定义类型转换器
    • SpringMVC对日期类型的转换示例
    • Springmvc自定义类型转换器实现步骤
    上一篇:JSP Spring 自动化装配Bean实例详解
    下一篇:JSP开发中hibernate框架的常用检索方式总结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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