以下是我的DTO类(class)。

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,但它不起作用。它允许在请求正文中以及在 postman 中执行服务后没有任何错误。

我尝试了以下选项,但没有运气。

1)尝试添加Maven依赖项。
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

2)尝试将DTO类注释为@Validated

3)试图用@NotNull注释createdDate字段@Valid,但还是不走运。

请帮我解决这个问题。

最佳答案

您有一个带有某些请求正文的端点;例如:

@RestController
public class TheController {

    @PostMapping(path = "/doSomething", consumes = "application/json", produces = "application/json")
    public void post(@Valid @RequestBody AbstractDTO request) {
        //code
    }
}

您需要为请求对象添加@Valid批注。只有这样,您才可以为AbstractDTO端点启用/doSomething的验证。

检查here,以获取更多详细信息

关于java - @NotNull批注在Spring Boot应用程序中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58182553/

10-10 09:46