【问题标题】:When does Spring parse String to LocalDate?Spring 何时将 String 解析为 LocalDate?
【发布时间】:2022-01-07 08:30:47
【问题描述】:

我有一个 Spring Boot 应用程序,我有一个将 LocalDate 作为输入的服务。

例如../resource/list?date=2022-01-01

这适用于 DateTimeFormat 注释以使用 iso 标准。但是,我想将字符串值作为“今天”传递。例如,../resource/list?date=today。如果该值为今天,那么我想将其转换为今天的日期并将请求发送到数据库。由于参数的类型是 LocalDate,通常我会收到 HTTP 400 错误请求。

我的问题是,Spring 何时将 String 解析为 LocalDate?如果我能知道那个阶段,我可以在 Spring 之前检查值并应用我的业务逻辑。

【问题讨论】:

  • 你可以打破像“2022-02-31”这样的日期并检查异常堆栈跟踪。

标签: spring spring-boot


【解决方案1】:

我有一个服务,它将 LocalDate 作为输入。

如果“服务”是指具有给定 URL 的端点映射的 Spring Boot 应用程序,我将注册一个转换器以将 String 值转换为 LocalDate:

public class CustomStringToLocalDateConverter implements Converter<String, LocalDate> {

    @Override
    public LocalDate convert(String from) {
        return "today".equalsIgnoreCase(from) ? LocalDate.now() : LocalDate.parse(from);
    }
}

并注册转换器:

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new CustomStringToLocalDateConverter());
    }
}

【讨论】:

    猜你喜欢
    • 2020-02-19
    • 2018-02-27
    • 2019-07-02
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 2013-08-27
    • 2017-11-12
    • 2012-05-24
    相关资源
    最近更新 更多