Spring boot 项目中put提交Date数据时出现type=Bad Request, status=400状态码
1.问题原因
经过测试发现,当客户端页面提交日期为空时会出现以下异常,如果提交日期不为空则不会出现上述问题。出现这种错误的原因是没有对代码中的Date型参数进行格式化,接收为null的日期类型参数时,出现了转换异常。一般是页面的数据与数据库的Date数据类型不同导致的。
2.解决办法
为后台用于接收日期类型并存入数据库的属性进行日期的格式化。
1、为该属性加上格式化注解:@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)(数据库中的日期格式)
如果接收日期的为实体类属性则直接在该属性上加,如果为方法参数直接加在方法参数前。
2、使用日期类型转换器,定义一个日期类型转换器将他交给spring容器管理,在转换时会自动调用。使用时实现Converter接口接口中泛型第一个参数为源类型第二个参数为目标类型。
@Component
public class StringToDateConvert implements Converter<String, Date> {
// 日期转换器
private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
@Override
public Date convert(String s) {
Date date = null;
try {
if(s!=null && !"".equals(s)){
date = format.parse(s);
}
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}