问题描述
当前台提交日期字符串到后台时,以字符串形式传输,若后台接收时采用Date类型,则会报格式转换错误的异常.
解决
方式一:
将 @DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
注解添加到实体类的字段上.
- 优点:可以灵活定义接收的类型
- 缺点:不能实现全局统一处理,要为每个需要转换的字段添加注解
方式二:
定义一个 BaseController
基础类,在类中使用 @InitBinder
注解定义一个全局的日期格式转换的方法,在定义其它Controller时继承 BaseController 即可.
@InitBinder
public void initBinder(ServletRequestDataBinder binder) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf, true));
}
- 优点:可以实现全局处理,无需关注具体需要转换的日期字段
- 缺点:只能定义一种日期格式
方式三(推荐):
自定义一个 DateConverterConfig
类,实现 spring 提供的 Converter,重写里面的 convert()
方法.
/**
* 全局 日期格式 转换器
*/
@Component
public class DateConverterCon