Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Springboot[2.1.6.版本]-禁用自动更正输入日期_Java_Spring Boot_Date_Validation - Fatal编程技术网

Java Springboot[2.1.6.版本]-禁用自动更正输入日期

Java Springboot[2.1.6.版本]-禁用自动更正输入日期,java,spring-boot,date,validation,Java,Spring Boot,Date,Validation,我有一个简单的问题。 如果我发送了一个带有以下日期参数的正文(如下),springboot会自动将其转换为1991年5月1日,我想禁用它。我想抛出一个异常来告诉客户,这不是一个有效的日期。可能吗 我的身体: { "gender": "MALE", "firstname": "XXX", "lastname": "XXX", "birthday"

我有一个简单的问题。 如果我发送了一个带有以下日期参数的正文(如下),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
}

您好,您可以做如下验证

@JsonDeserialize(using = Deserializer.class)
@JsonSerialize(using = Serializer.class)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date begin_date;
似乎这还不够,因为您不仅要检查格式,还要验证。所以你最好做一个反序列化。要做到这一点,你需要像这样改变核心

 public class Deserializer extends JsonDerializer<Date>{

}
公共类反序列化器扩展JsonDerializer{
}
从这里,您可以检查如何验证日期,并在此基础上抛出错误


顺便说一句,我们可以看到您的->用户更新IDTO

只使用
Date
作为日期。该类的设计很差,很早就过时了,并且不表示日期(尽管有类名)。从中使用
LocalDate