SpringBoot空指针异常及时间格式问题

前言

在用Springboot和bootstrap做项目时,添加数据的时候,增加完毕后跳转失败,并报空指针异常。在添加时间数据时,又报400错误,下面是出现的问题及阶级措施。

1、空指针异常

问题描述:跳转页面出现500错误,说明逻辑代码出现问题,加之又报空指针异常:java.lang.NullPointerException: null

原因: 静态变量或者类变量不是对象的属性,而是属于一个类的属性,Spring的属性注入是基于对象层面上的(一般Spring通过容器去创建对象,创建完成再进行对象的属性注入),在利用@Autowired进行属性注入时,自然不能用关键字static修饰变量了。

解决方案: 去掉static即可,避免注入静态配置

2、时间格式问题

在用"2021-12-13"格式添加日期时,出现400错误,400错误常见的原因有以下两点:

1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装;

2)前端提交到后台的数据应该是 json 字符串类型,而前端没有将对象转化为字符串类型;

 很明显是原因1,前端向后端传递的日期参数类型是字符串类型,而后端声明的是日期类型的,所以自然会出现问题。但是为什么传递"2021/12/13"就不会出现这个问题呢?难道"2021/12/13"就不是字符串形式吗?

阅读Springboot关于属性配置的源码--WebMvcProperties.class会发现 ,其默认的日期格式正好是"2021/12/13"这种类型的

 解决方案:

1)在变量上面加注解,有两种方式,用pattern指定某种特定的格式,这时默认的格式就失效了或者用fallbackPatterns指定多种格式。当然这种添加注解的方式看上去方便,但是只对某个类里的属性生效。当然还可以通过HH:mm:ss添加具体的时间,文章结果增加了具体的时间。

//@DateTimeFormat(fallbackPatterns = {"yyyy-MM-dd","yyyy/MM/dd"}),可以写多种日期格式
    //@DateTimeFormat(pattern = "yyyy-MM-dd"),这种方式只适合1999-12-05日期格式
    private Date birth;

2)利用yaml/yml/properties属性文件进行配置,指定日期格式为yyyy-MM-dd,默认格式:yyyy/MM/dd会失效

#日期格式化
  mvc:
    format:
      date: yyyy-MM-dd

3、结果

 

猜你喜欢

转载自blog.csdn.net/qq_53860947/article/details/124131075