验证 Java LocalDate 是否与 yyyy-MM-dd 格式与可读消息匹配

ppb*_*ppb 5 java jackson bean-validation jackson-databind

我在 DoB 的 POJO 类中有以下属性。

@NotNull(message = "dateOfBirth is required")
@JsonDeserialize(using = LocalDateDeserializer.class)
LocalDate dateOfBirth;
Run Code Online (Sandbox Code Playgroud)

我怎样才能验证这一点

  1. 用户正在发送有效的日期格式(仅接受 YYYY-MM-DD)
  2. 如果用户输入不正确的日期,我想发送自定义消息或更易读的消息。目前,如果用户输入无效日期,则应用程序会发送以下长错误 -
JSON parse error: Cannot deserialize value of type `java.time.LocalDate` from String \"1984-33-12\": Failed to deserialize java.time.LocalDate:
(java.time.format.DateTimeParseException) Text '1984-33-12' could not be parsed: Invalid value for MonthOfYear (valid values 1 - 12): 33; 
...
Run Code Online (Sandbox Code Playgroud)

Isu*_*ghe 2

您可以使用此注释:

@JsonFormat(pattern = "YYYY-MM-DD")
Run Code Online (Sandbox Code Playgroud)

您可以在此处进一步阅读有关验证日期格式时的自定义错误消息的信息: 自定义错误消息