首页 > 解决方案 > Spring @Valid 和 @Validated 不能一起工作

问题描述

我将 @Validated 和 @Valid 一起用于 DTO 验证。但问题在于组级别验证工作或属性级别 1 工作。两者不能一起工作。

我可以知道我的代码有什么问题吗?

public class Employee {

    //I want to validate status. It should be either 0 or 1 
     (Active/Inactive). 
    //Also it should not be null both for existing and new record.
    @NotNull(groups = { New.class, Old.class })
    @JsonProperty("emp")
    @Min(0) 
    @Max(1)
    private Integer empStatus;

    ...

    public interface Old {
    }

    public interface New {
    }
}

控制器类

public ResponseEntity<Object> updateEmployee(
            @Valid @Validated(Employee.Old.class) @RequestBody Employee empDTO) throws Exception {

            ...
}

当我只保留@Validated 注释时,@NotNull 检查工作正常但最小值、最大值检查失败当我只保留@Valid 最小值时,最大值检查工作正常但@NotNull 不起作用

当我只保留最小值时,最大值检查有效,但 @NotNull 不起作用。

如何修复代码以使所有验证正常工作?

标签: javaspringspring-validator

解决方案


推荐阅读