【发布时间】:2019-10-01 10:08:00
【问题描述】:
下面是我的 DTO 课程。
public class AbstractDTO extends BaseDTO {
private Integer createdBy;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DATE_FORMAT)
@NotNull(message = "createdDate may not be null")
private LocalDateTime createdDate;
private Integer lastModifiedBy;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DATE_FORMAT)
private LocalDateTime lastModifiedDate;
private Boolean isActive;
// getter & setters
}
在这里我试图将 createdDate 字段注释为 @NotNull 但它不起作用。它允许在请求正文中并且在邮递员中执行服务后没有收到任何错误。
我尝试了以下选项,但没有运气。
1) 尝试添加maven依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2) 尝试将 DTO 类注解为 @Validated
3) 尝试用 @NotNull 注释 createdDate 字段 @Valid 但仍然不成功。
请帮我解决这个问题。
【问题讨论】:
-
您是否尝试在控制器方法签名中将 DTO 类注释为 @Validated ?类似
void foo(@Validated MyDTO dto) -
@ArnaudDenoyelle 此 DTO 已在多个位置使用超过 25 个文件,我是否必须在每个文件中进行更改?还有其他解决办法吗?
-
你的应用程序是否有启动器 - spring-boot-starter-web 它将加载休眠验证器到依赖项。这将验证 bean。请通过此链接 - stackoverflow.com/questions/48200444/…
-
检查我的答案,它应该可以解决您的问题。但是,如果
@NotNull不起作用而@JsonPattern起作用,则可能是使用了错误的@NotNull。否则,您似乎忘记在控制器方法中添加@Valid。
标签: java spring spring-boot spring-mvc