我创建了一个springboot(2.0.6.RELEASE)并将其配置放入我的application.yml:
jackson:
date-format: dd/MM/yyyy
所以当我的用户调用我的API时,每个日期都将返回,如下所示:
"vencimento": "01/07/2017"
所以,现在我在项目中放了一个CORS
@Configuration
@EnableWebMvc
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
}
但是现在,我提交的所有日期都像这样返回:
"vencimento": [
2017,
1,
7
],
有人知道为什么吗?以及如何解决这个问题? tks
答案 0 :(得分:2)
添加@EnableWebMvc you're saying to Spring that you want to get the full control over Spring MVC configuration。因此,您需要手动配置Jackson对象映射器。
主要是添加以下设置:
objectMapper.registerModule(new JavaTimeModule());
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
默认情况下,启用SerializationFeature.WRITE_DATES_AS_TIMESTAMPS
,它会提供一系列类似于您的日期时间分量(例如,[2014,3,30,12,30,23,123456789]
而不是"2014-03-30T12:30:23.123456789"
)。
有关如何配置对象映射器并将其注册为@Configuration类中的bean的示例(如果您不熟悉该操作的话):
@Bean
public ObjectMapper jsonObjectMapper() {
final ObjectMapper jsonMapper = new ObjectMapper();
jsonMapper.registerModule(new JavaTimeModule());
jsonMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
//some other configuration like:
jsonMapper.registerModule(new Jdk8Module());
jsonMapper.disable(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS);
return jsonMapper;
}
答案 1 :(得分:0)
CROSP说过,启用@EnableWebMvc
将关闭Spring Boot中的默认设置。以下是我不使用@EnableWebMvc
批注的情况下配置CORS的方法:
@Configuration
class CorsConfig {
@Bean
fun corsConfigurer() = object : WebMvcConfigurer {
override fun addCorsMappings(registry: CorsRegistry) {
registry.addMapping("/**").allowedOrigins("*")
super.addCorsMappings(registry)
}
}
}
参考:Spring Guide