【问题标题】:@EnableWebMvc showing date in array formate@EnableWebMvc 以数组格式显示日期
【发布时间】:2021-01-30 06:17:30
【问题描述】:

我们在 Spring Boot 上有两个应用程序。一个是基于 spring rest api,第二个是基于 spring MVC。

由于某些业务原因,我们已经对这两个应用程序进行了合并,因为上下文相同并且一切正常,除了 java.time.LocalDateTime 格式化由 spring 自动在 rest API 上执行。 以前它将 LocalDateTime 格式化为“2018-08-30T18:13:24” 但合并后显示为 [ 2018年, 08, 30, 18, 13, 24 ],

我发现@EnableWebMVC 注释是罪魁祸首,但删除该注释后,web-mvc 页面不起作用。

我应该怎么做才能以 ISO(字符串)格式显示日期并查看解析器和 jsp 页面正常工作?

请帮忙谢谢。

【问题讨论】:

  • 我几乎浪费了一整天的时间查看不同的 Jackson 配置替代方案,但没有任何效果。谢天谢地,我偶然发现了你的帖子,确实 @EnableWebMvc 是罪魁祸首。

标签: java spring spring-boot spring-mvc spring-rest


【解决方案1】:

对于那些仍然面临问题的人,@EnableWebMVC 绝对是罪魁祸首,因为它禁用了 Web MVC 自动配置默认行为,有利于您的行为。

关于那个,Spring Boot reference documentation says:

Spring MVC 自动配置
...
如果你想完全控制 Spring MVC,你可以添加自己的 @Configuration 注解 @EnableWebMvc ...

但是,您可以添加自定义配置而不会丢失默认的自动配置行为。

如果您想保留那些 Spring Boot MVC 自定义并进行更多 MVC 自定义(拦截器、格式化程序、视图控制器和其他功能),您可以添加自己的@Configuration 类型的 WebMvcConfigurer 类,但没有 @EnableWebMvc

也就是说,删除 @EnableWebMVC 应该可以正常工作

【讨论】:

    【解决方案2】:

    如果您使用 Jackson 作为您的 JSON POJO 映射器,您可以设置以下属性:

    spring:
      jackson:
        date-format: yyyy-MM-dd'T'hh:mm:ss
        serialization:
          write-dates-as-timestamps: false
    

    spring.jackson.serialization.write-dates-as-timestamps 默认为true,它将LocalDateTime 序列化为一个数组,就像您显示的那样。

    对于更细粒度的控件,您还可以注释日期时间字段,如下所示:

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'hh:mm:ss")
    private LocalDateTime datetime;
    

    它优先于上述属性。

    在此处查看其他与 JSON 相关的 Spring Boot 属性:https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#json-properties

    【讨论】:

    • 只有这个 @JsonFormat 有效,但我不想在每个 dto 上都这样做。我想通过集中的方式来做。
    • 你定义了自己的ObjectMapper bean 吗?如果是这种情况,则此属性将不起作用,但您仍然可以使用 objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) 在 objectMapper 中设置此配置。
    猜你喜欢
    • 1970-01-01
    • 2022-07-07
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 2019-10-15
    • 1970-01-01
    相关资源
    最近更新 更多