这是一个修改数据的功能,隐藏时间字段,不作修改。
html
<tr><td><input type="hidden" th:field="*{bloodInspectionTime}" th:value="${#dates.format(bloodResult.bloodInspectionTime, 'yyyy-MM-dd HH:mm:ss')}" ></td></tr>
<tr><td><input type="hidden" th:field="*{bloodReportTime}" th:value="${#dates.format(bloodResult.bloodReportTime, 'yyyy-MM-dd HH:mm:ss')}" ></td></tr>
提交时报错
Field error in object 'bloodProjectResult' on field 'bloodInspectionTime': rejected value [2021-07-09 00:00:00.0]; codes [typeMismatch.bloodProjectResult.bloodInspectionTime,typeMismatch.bloodInspectionTime,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [bloodProjectResult.bloodInspectionTime,bloodInspectionTime]; arguments []; default message [bloodInspectionTime]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'bloodInspectionTime'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@javax.persistence.Column java.util.Date] for value '2021-07-09 00:00:00.0'; nested exception is java.lang.IllegalArgumentException]
Field error in object 'bloodProjectResult' on field 'bloodReportTime': rejected value [2021-07-12 00:00:00.0]; codes [typeMismatch.bloodProjectResult.bloodReportTime,typeMismatch.bloodReportTime,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [bloodProjectResult.bloodReportTime,bloodReportTime]; arguments []; default message [bloodReportTime]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'bloodReportTime'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@javax.persistence.Column java.util.Date] for value '2021-07-12 00:00:00.0'; nested exception is java.lang.IllegalArgumentException]]
查了资料才知道,需要在实体类字段定义时加上@Temporal和@DateTimeFormat
@Column(name = "blood_inspection_time")
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date bloodInspectionTime;
@Column(name = "blood_report_time")
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date bloodReportTime;
资料来源:https://stackoverflow.com/questions/20361691/formatting-thfield-in-thymeleaf
注解解析
@Temporal(TemporalType.DATE)
如果在某类中有Date类型的属性,数据库中存储可能是’yyyy-MM-dd hh:MM:ss’要获得’是’yyyy-MM-dd hh:MM:ss’,在该属性上标注 @Temporal(TemporalType.TIMESTAMP) 会得到形如’HH:MM:SS’ 格式的日期
返回到前台就是一个时间戳
结合@DateTimeFormat使用。
本文介绍如何在Thymeleaf模板中正确处理日期时间字段,并通过@Temporal和@DateTimeFormat注解解决Spring MVC中类型转换错误的问题。
1202

被折叠的 条评论
为什么被折叠?



