【问题标题】:Springboot [2.1.6.RELEASE] - Disable autocorrect input datesSpring Boot [2.1.6.RELEASE] - 禁用自动更正输入日期
【发布时间】:2020-07-24 07:59:45
【问题描述】:

我遇到了一个简单的问题。 如果我发送了一个带有以下日期参数的正文(如下),springboot 会自动将其转换为 1991 年 5 月 1 日,并且我想禁用它。我想抛出一个异常告诉客户,那不是一个有效的日期。这可能吗?

我发送的身体:

{
  "gender": "MALE",
  "firstname": "XXX",
  "lastname": "XXX",
  "birthday": "1991-04-31"
}

我的 WebRequestController:

public @ResponseBody void updateUser (@PathVariable Long userId, @Valid @RequestBody UserUpdateIDTO userDTO) throws UserNotFoundException, ValidationException {
        userService.updateUser(userId, userDTO); // userDTO got the 1st may 1991
}

【问题讨论】:

    标签: java spring-boot date validation


    【解决方案1】:

    您好,您可以进行验证,例如;

    @JsonDeserialize(using = Deserializer.class)
    @JsonSerialize(using = Serializer.class)
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date begin_date;
    

    这似乎还不够,因为您不仅要检查格式,还要验证。所以你最好做一个反序列化器。为此,您需要像这样更改核心。

     public class Deserializer extends JsonDerializer<Date>{
    
    }
    

    https://www.baeldung.com/java-string-valid-date 从这里您可以检查如何验证日期,并在此基础上也可以抛出错误。

    顺便说一下,我们可以看到你的 -> UserUpdateIDTO

    【讨论】:

    猜你喜欢
    • 2021-08-11
    • 1970-01-01
    • 2015-03-10
    • 2019-11-09
    • 1970-01-01
    • 2019-06-21
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多