Java 如何在Spring验证器中拒绝列表中的无效值?

Java 如何在Spring验证器中拒绝列表中的无效值?,java,spring,validation,Java,Spring,Validation,我从JSON客户端请求体接收反序列化的域对象ID列表: @JsonProperty("workgroups") private List<WorkgroupId> workgroupIds = new ArrayList<>(); 问题: 如何拒绝org.springframework.validation.Errors中的无效值?验证程序界面: @Target({ ElementType.FIELD, ElementType.ANNOTATION_TYPE }) @R

我从JSON客户端请求体接收反序列化的域对象ID列表:

@JsonProperty("workgroups")
private List<WorkgroupId> workgroupIds = new ArrayList<>();
问题:

如何拒绝org.springframework.validation.Errors中的无效值?

验证程序界面:

@Target({ ElementType.FIELD, ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = { CustomValidatorValidator.class })
@Documented
public @interface CustomValidator{
    String message() default "Put here your default message";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}
我不明白你为什么在最后的代码中初始化列表。如果这是您应该通过请求接收的字段,则无需对其进行初始化,json反序列化程序将使用json中的传入字段对其进行初始化。

您可以使用reject和/或rejectValue以及字段/错误代码/defaultMessage或自定义验证器来拒绝这些值

@Target({ ElementType.FIELD, ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = { CustomValidatorValidator.class })
@Documented
public @interface CustomValidator{
    String message() default "Put here your default message";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}
public final class CustomValidatorValidator implements ConstraintValidator<CustomValidator, List<WorkgroupId>> {

    @Override
    public void initialize(CustomValidator constraintAnnotation) {

    }

    @Override
    public boolean isValid(List<WorkgroupId> yourlist, ConstraintValidatorContext context) {
        if (yourlist== null)
            return true;
        else
            return yourlist.stream().anyMatch(s -> /* filter here as you want */);
    }
}
@JsonProperty("workgroups")
@CustomValidator
private List<WorkgroupId> workgroupIds = new ArrayList<>();