我们需要自定义全局配置,该配置描述了请求的设置cors-header。
我使用SpringBoot,一个项目是以文件扩展名 *. war打包的SpringBoot。
@SpringBootConfiguration
@EnableScheduling
@SpringBootApplication
public class App
extends SpringBootServletInitializer
implements WebApplicationInitializer {
private static final Logger LOGGER = LoggerFactory.getLogger( App.class );
public static void main(String[] args) {
LOGGER.info("Start an application...");
SpringApplication.run(App.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
LOGGER.info("There is building the web application!");
return builder.sources(App.class);
}
}
这是cors-header的设置。我必须导入Spring MVC配置(@EnableWebMvc),以确保我设置的配置工作正常。
@EnableWebMvc
@Configuration
public class CorsGlobalConfiguration {
private final static String ROOT_API = "/**";
@Bean
public WebMvcConfigurer corsConfig(){
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping(ROOT_API)
.allowedHeaders("*")
.allowedOrigins("*")
.allowedMethods("GET","POST","PUT");
}
};
}
}
但是客户端在数组中的日期中得到了一个json。
例如:
客户端必须获得:
“2020年3月14日11时32分33秒”,
但是一个客户
[2020年3月14日11日32日33日]
更新_1
是的,是的
@Configuration
public class JacksonConfig {
@Bean
@Primary
public ObjectMapper configureObjectMapper() {
JavaTimeModule javaTimeModule = new JavaTimeModule();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(javaTimeModule);
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
return objectMapper;
}
}
它不工作。
更新_2
是的,是的
spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS = false
它不工作。
更新_3
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.10.3</version>
</dependency>
和
spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS = false
这也行不通。
更新_4
我执行了以下操作;
- application.properties
第一个
- 数据输出
...
private LocalDateTime statusDate;
...
我得到:
为什么会这样呢?
它如何正确?
谁有什么想法?
更新_5
我拒绝使用@EnableWebMvc注解。
我的配置类现在是:
@Configuration
public class CorsGlobalConfiguration {
@Value("${api.prefix}")
private String apiPrefix;
@Value("${header.cors.origins.allow}")
private String [] headerCorsOriginsAllow;
@Value("${header.cors.methods.allow}")
private String [] headerCorsMethodsAllow;
@Bean
public WebMvcConfigurer corsConfig() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping(apiPrefix)
.allowedOrigins(headerCorsOriginsAllow)
.allowedMethods(headerCorsMethodsAllow);
}
};
}
}
问题解决了。
2条答案
按热度按时间2q5ifsrm1#
将
jackson-datatype-jsr310
添加到依赖项中。然后将以下属性添加到
application.properties
文件中:spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS = false
fykwrbwg2#
如果添加
@EnableWebMvc
,则默认情况下启用SerializationFeature.WRITE_DATES_AS_TIMESTAMPS
。因此,请手动配置Jackson对象Map器以禁用此功能。或
在
application.properties
中更改它您也可以使用此行添加自己的串行器类(例如
JacksonLocalDateSerializer
)示例:这里我需要显示为格式
yyyy-MM-dd HH:mm:ss