我正在使用spring启动项目中的hibernate验证器验证一个实体。我得到了日期验证器@Past的一个例外。我面对javax.validation.ValidationException: HV000028: Unexpected exception during isValid call
这是我的gradle.build文件中的依赖项
implementation 'org.springframework.boot:spring-boot-starter-validation'
下面是我的一个类似的实体
@NoArgsConstructor
@Data
public class Person{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "FIRST_NAME")
@NotEmpty(message = "ENTER REQUIRED FIELDS - FIRST NAME")
private String firstName;
@Column(name = "LAST_NAME")
@NotEmpty(message = "ENTER REQUIRED FIELDS - LAST NAME")
private String lastName;
@Column(name = "BIRTH_DATE")
@Past(message = "PLEASE ENTER A VALID DATE ")
private Date birthDate;
}
这是一个日志跟踪
2020-10-25 13:09:11.421 DEBUG 21952 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet : Completed 500 INTERNAL_SERVER_ERROR```
发布于 2021-02-05 20:44:53
这是给和我有同样问题的人的。我的问题是来自java.sql.Date的日期对象。现在,我将它们更改为java.util.Date验证工作。
发布于 2020-10-26 09:44:26
我快速地运行了我的示例项目,其中所有的东西都已经配置好了,我认为日期格式是问题所在。可用的默认格式如下
我就是这样做的
控制器
@PostMapping(value = "test-person")
public TestPerson testPerson(@Valid @RequestBody TestPerson testPerson) {
return testPerson;
}
@Getter
@Setter
@NoArgsConstructor
@Data
public static class TestPerson {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "FIRST_NAME")
@NotEmpty(message = "ENTER REQUIRED FIELDS - FIRST NAME")
private String firstName;
@Column(name = "LAST_NAME")
@NotEmpty(message = "ENTER REQUIRED FIELDS - LAST NAME")
private String lastName;
@Column(name = "BIRTH_DATE")
@Past(message = "PLEASE ENTER A VALID DATE ")
@NotNull
private Date birthDate;
}
@ControllerAdvice
public static class RestExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<Object> handleAllExceptionMethod(MethodArgumentNotValidException ex, WebRequest requset) {
// general response dump
return ResponseEntity.badRequest().body(ex.getBindingResult().getAllErrors());
}
}
还要确保对于birthDate
,您不应该使用@NotEmpty
,而应该使用@NotNull
,因为对于NotEmpty
length of character sequence is evaluated
https://stackoverflow.com/questions/64528479
复制相似问题