在使用ssm框架搭建项目的提交表单到后台获取数据的时候出现的问题:
20-Feb-2021 22:46:53.164 警告 [http-nio-8081-exec-7] org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.logException Resolved [org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors
Field error in object 'salesOrder' on field 'date_of_order': rejected value [2021-02-09]; codes [typeMismatch.salesOrder.date_of_order,typeMismatch.date_of_order,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [salesOrder.date_of_order,date_of_order]; arguments []; default message [date_of_order]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'date_of_order'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.util.Date] for value '2021-02-09'; nested exception is java.lang.IllegalArgumentException]
从错误信息里提取关键点:
’java.lang.String’ to required type 'java.util.Date’
看到这里之后,我突然想起我的实体类里是有使用了Date数据类型的,既然使用了Date数据类型,那么我们需要给它加上两个注解,这样在提交带有日期的表单也可以成功提交:
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date date_of_order;
当然了在此之前,你需要引入使用这两个注解的maven的坐标:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.2</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.1</version>
</dependency>