Spring Boot+Thymeleaf日期格式转换失败问题求助
问题分析与解决方案
核心问题
提交日期转换失败的根本原因是实体类日期格式配置与表单提交的格式不匹配,同时你还误用了日期格式符:
- HTML的
input type="date"会固定以yyyy-MM-dd格式提交日期(比如你提交的2022-12-14) - 你实体类中
@DateTimeFormat(pattern = "mm-DD-yyyy")存在两个错误:mm代表分钟,不是月份,月份应该用MMDD代表一年中的第几天,不是月份中的日期,应该用dd
就算格式符正确,mm-DD-yyyy也和表单提交的yyyy-MM-dd完全不匹配,导致转换失败。
解决步骤
方案1:修正实体类的日期格式配置
将实体类的@DateTimeFormat改为与表单提交格式一致的yyyy-MM-dd,同时修正格式符:
@DateTimeFormat(pattern = "yyyy-MM-dd") @Column(name = "date") private Date date;
方案2:推荐使用Java 8+的时间API(更简洁可靠)
java.util.Date已经过时,推荐使用LocalDate(仅日期,不带时间),Spring会自动适配转换:
// 无需额外指定格式,Spring默认支持yyyy-MM-dd的转换 @Column(name = "date") private LocalDate date;
如果需要显式指定格式,同样可以加@DateTimeFormat:
@DateTimeFormat(pattern = "yyyy-MM-dd") @Column(name = "date") private LocalDate date;
验证
修改后重新提交表单,2022-12-14就能正确转换为实体类中的日期字段了。
内容的提问来源于stack exchange,提问作者Stefan Jankovic
相关产品推荐
相关产品推荐

