返回顶部
首页 > 资讯 > 后端开发 > Python >基于SpringBoot项目遇到的坑--Date入参问题
  • 846
分享到

基于SpringBoot项目遇到的坑--Date入参问题

2024-04-02 19:04:59 846人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录SpringBoot Date入参问题1.传输中的Date类型时间不准确2.后台返回的JSON数据springboot接口入参的一些问题入参绑定入参错误全局异常处理SpringB

SpringBoot Date入参问题

springboot项目遇到的坑-----使用@ResponseBody @RequestBody,对象Date 类型入参,返回json格式化

1.传输中的Date类型时间不准确

时区会有8个小时偏差

原因分析

而SpringBoot默认的是Jackson框架转换,而Jackson默认的时间时区是GMT,对于中国时间少8个小时

解决方案

在传输的Date属性字段上加此注解


@JsonFORMat(timezone = “GMT+8”,pattern = “yyyy-MM-dd”)

在传输实体类中定义一个Long型成员变量存储时间戳 传输过程中只传时间戳 后台将其进行转换为Date然后赋值


   class Test{
		private Date time;
		private Long timeLong;
   }
   
   @PostMapping("/test")
   public Test test(@RequestBody Test test){
       test.setTime(new Date(test.getTimeLone()));
       return test;
   }

2.后台返回的json数据

其中Date类型接收会自动转换成Long类型的时间戳

在这里插入图片描述

原因分析:

springboot1.x版本默认的json处理是jackson 会将date字段返回时间戳

解决方案:

全局配置


spring:  
 jackson:
   time-zone: GMT+8
   date-format: yyyy-MM-dd HH:mm:ss

如果个别实体需要使用其他格式的 pattern,在实体上加入注解即可


@JsonFormat(timezone = “GMT+8”,pattern = “yyyy-MM-dd”)
private Date time;

在这里插入图片描述

springboot接口入参的一些问题

最近在工作中遇到一个接口入参类型转换错误未被处理的问题,于是整理了一些关于springMVC入参的问题

入参绑定

1、入参中我们最常见的是date类型的参数转换,这个可以通过注解来实现参数类型的转换,只需在bean对象的属性上方添加注解@DateTimeFormat(pattern=“yyyy-MM-dd”),pattern为时间对象的格式化

在这里插入图片描述

2、在controller类里定义数据绑定类



    @InitBinder
    public void initBinder(WEBDataBinder webDataBinder) throws Exception{
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        simpleDateFormat.setLenient(false);
        webDataBinder.reGISterCustomEditor(Date.class , new CustomDateEditor(simpleDateFormat , true));
    }

3、定义全局的参数类型转换器

首先建立一个实现Converter的转换器


 public class DateConverter implements Converter<String,Date> {
     private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     @Override
     public Date convert(String s) {
         if ("".equals(s) || s == null) {
            return null;
         }
         try {
            return simpleDateFormat.parse(s);
         } catch (ParseException e) {
             e.printStackTrace();
         }
         return null;
     }
 }

然后将该参数转换器绑定到springmvc的配置中


@Configuration
public class WebConfigBeans {
    @Autowired
    private RequestMappingHandlerAdapter handlerAdapter;
    
    @PostConstruct
    public void initEditableAvlidation() {
        ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer)handlerAdapter.getWebBindingInitializer();
        if(initializer.getConversionService()!=null) {
            GenericConversionService genericConversionService = (GenericConversionService)initializer.getConversionService();           
            genericConversionService.addConverter(new StringToDateConverter());
        }
    }
}

入参错误全局异常处理

在springmvc的模型中,若参数转换出现异常,会直接跳转到默认的错误400页面,如果我们做的为接口,需返回一个代表错误的json对象时,我们可以使用一个全局的异常处理类,类上添加注解@RestControllerAdvice使得异常处理后返回rest风格的对象,使用@ControllerAdvice返回页面


@RestControllerAdvice
public class ControllerAdvice  {
@ExceptionHandler(value = {org.springframework.validation.BindException.class})
    public BaseResp dealDateFarmatException(Throwable exception) {
        BaseResp resp = new BaseResp();
        resp.setCode("400");
        resp.setStatus(false);
        resp.setMsg("参数类型错误");
        return resp;
    }
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 基于SpringBoot项目遇到的坑--Date入参问题

本文链接: https://lsjlt.com/news/155348.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 基于SpringBoot项目遇到的坑--Date入参问题
    目录SpringBoot Date入参问题1.传输中的Date类型时间不准确2.后台返回的json数据springboot接口入参的一些问题入参绑定入参错误全局异常处理SpringB...
    99+
    2024-04-02
  • 基于Lombok集成springboot遇到的坑
    目录Lombok集成springboot遇到的坑问题原因springboot引入LombokLombok集成springboot遇到的坑 最近有同事在spring boot中用Lom...
    99+
    2024-04-02
  • Docker compose部署SpringBoot项目连接MySQL及遇到的坑
    前面使用docker简单部署了下SpringBoot项目并介绍了什么是Dockerfile,如果是镜像比较多的情况下如何一键交付呢?Docker-compose!,理解了Docker...
    99+
    2024-04-02
  • springboot项目打成war包部署到tomcat遇到的一些问题
    开发环境使用jdk1.8.0_60,把springboot 项目打成war包后,部署到apache-tomcat-7.0.68时报错如下,换成apache-tomcat-8.0.9解决org.apache.catalina.Lifecycl...
    99+
    2023-05-31
    springboot war tomcat
  • springboot项目全局异常处理会遇到哪些问题
    这篇文章主要介绍了springboot项目全局异常处理会遇到哪些问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。问题一:全局异常抽离出来后,业务错误码如何定义?之前团队的业...
    99+
    2023-06-28
  • IDEA上面搭建一个SpringBoot的web-mvc项目遇到的问题
    这几天一直在研究IDEA上面怎么搭建一个web-mvc的SpringBoot项目,看网上的教程一步步的搭建,可是还是出现一堆的问题。为了让大家以后少走一些弯路,我在这里分享一下我这几天研究的成果,也希望对大家能有所帮助。这里先介绍一下各种环...
    99+
    2023-05-31
    idea spring boot
  • springmvc项目使用@Valid+BindingResult遇到的问题
    目录第一步:pom.xml中引入javax.validation和hibernate-validator第二步:创建需要校验的参数bean类这里一定要注意两个问题第三步:写contr...
    99+
    2024-04-02
  • 浅谈将three项目迁移至vue项目遇到的问题
    目录通过npm下载的three依赖无法正常使用导入模型的路径出现了问题3D场景渲染后没有进行销毁由于我的3D场景起初是自己为了测试搭建的,所以使用的是html + three,后来将...
    99+
    2024-04-02
  • springboot项目之相互依赖报错问题(基于idea)
    目录springboot相互依赖报错解决方法springboot项目处理循环依赖问题(circular reference)解决方法springboot相互依赖报错 昨天在辛劳的进行...
    99+
    2024-04-02
  • 基于restTemplate遇到的编码问题及解决
    目录背景问题一:中文乱码描述分析结论方案总结问题二:特殊字符串丢失描述分析结论方案背景 之前用restTemplate做网络间的请求,没遇到过问题。今天先是出现了中文乱码的问题,而后...
    99+
    2024-04-02
  • 如何解决将three项目迁移至vue项目遇到的问题
    这篇文章主要介绍了如何解决将three项目迁移至vue项目遇到的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。通过npm下载的three依赖无法正常使用在原项目中使用的是...
    99+
    2023-06-28
  • 基于springboot拦截器HandlerInterceptor的注入问题
    目录springboot拦截器HandlerInterceptor的注入一、问题描述二、解决策略三、知识总结springboot HandlerInterceptor 拦截器匹配规则...
    99+
    2024-04-02
  • react项目引入antd框架方式及遇到的坑怎么解决
    这篇文章主要介绍了react项目引入antd框架方式及遇到的坑怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇react项目引入antd框架方式及遇到的坑怎么解决文章都会有所收获,下面我们一起来看看吧。r...
    99+
    2023-07-05
  • 将项目从JBOSS 6 迁移到 JBOSS 7所遇到的问题
    以下内容只是以笔记形式记录,以防再次折腾,同时提供一个借鉴: 1、项目中的数据源使用的是JBOSS的JNDI,在6、7两个版本中,配置差别较大,具体配置方法,资料配置较多,我这里不重复说(可参考h...
    99+
    2024-04-02
  • SpringBoot项目找不到javax.servlet.Filter的问题及解决
    目录SpringBoot找不到javax.servlet.Filter的问题启动SpringBoot项目找不到报错这是我配置的(有问题的)正确的配置(在远程maven仓库中搜索的配置...
    99+
    2024-04-02
  • 解决spring boot创建项目遇到配置的问题
    目录spring boot创建项目遇到配置的问题如下图所示需要修改sping运行时读取的地址SpringBoot项目创建及一些常见问题处理1.先创建一个maven项目,确保可以正常使...
    99+
    2024-04-02
  • vue-cli构建Vue项目遇到的问题有哪些
    小编给大家分享一下vue-cli构建Vue项目遇到的问题有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!问题表象和解决方案1、编译后js、css等相对路径和绝对路径。config/in...
    99+
    2024-04-02
  • 使用Mybatis遇到的坑之Integer类型参数问题怎么解决
    这篇文章主要讲解了“使用Mybatis遇到的坑之Integer类型参数问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用Mybatis遇到的坑之Integer类型参数问题怎么解决...
    99+
    2023-07-05
  • 使用SpringBoot项目导入openfeign版本的问题
    目录SpringBoot项目导入openfeign版本版本2.1.1版本2.2.2被SpringBoot整合OpenFeign坑惨了项目集成OpenFegin解决问题SpringBo...
    99+
    2024-04-02
  • 如何解决vue项目部署上线遇到的问题
    这篇文章将为大家详细讲解有关如何解决vue项目部署上线遇到的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。流程     1.服...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作