Java Springboot[2.1.6.版本]-禁用自动更正输入日期
我有一个简单的问题。 如果我发送了一个带有以下日期参数的正文(如下),springboot会自动将其转换为1991年5月1日,我想禁用它。我想抛出一个异常来告诉客户,这不是一个有效的日期。可能吗 我的身体: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"
{
"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
。