我使用弹簧靴和弹簧4。
information = ' '.join(information)
我尝试使用Java 8 LocalDate。
在json中我有
的日期生日:" 1969-12-29"
在此字段的服务器端,我有
@EntityScan(basePackageClasses = {ServerApplication.class, Jsr310JpaConverters.class})
@SpringBootApplication
@EnableCaching
public class ServerApplication {
public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
}
}
我收到此错误
org.springframework.http.converter.HttpMessageNotReadableException: 无法读取文档:无法实例化类型的值[简单 类型,类java.time.LocalDate]来自String值(' 1969-12-29');没有 单字符串构造函数/工厂方法
修改
通过ajax发送
@DateTimeFormat(iso=DateTimeFormat.ISO.DATE)
private LocalDate birthdate;
控制器休息班
public class LodgerInformationDto {
private Long lodgerId;
private String firstName;
private String lastName;
@DateTimeFormat(iso=DateTimeFormat.ISO.DATE)
private LocalDate birthdate;
}
有这种依赖关系:com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.6.3
application.properties中的这一行 spring.jackson.serialization.write-日期-AS-时间戳=假
那工作。
答案 0 :(得分:4)
@DateTimeFormat
用于模型属性(命令对象),而不是JSON主体。
从你的问题,
在json中我有
的日期
您似乎将日期作为请求正文的一部分提交,如JSON。
处理JSON反序列化的过程完全不同。通常情况下,这是MappingJackson2HttpMessageConverter
,假设您在类路径上有杰克逊。
为了与Jackson合作,您需要一个支持Java 8类型的Module
。有this one和this one。这些知道如何将JSON内容反序列化为Java 8日期时间类型。
您可以使用@JsonFormat
提供日期格式。