gpt4 book ai didi

Java 验证 - 将 @Valid 约束添加到自定义约束会引发 "@Valid is not applicable to annotation type"

转载 作者:行者123 更新时间:2023-12-01 12:55:00 24 4
gpt4 key购买 nike

我有一个使用 Java 验证注释进行注释的模型对象。

class Criteria{
@NotEmpty String id;
@NotEmpty String name;
String fileName;
String hours;
}

根据业务要求,将填充文件名或小时字段,以验证我是否编写了自定义 validator “CriteriaValidator”。

@Documented
@Constraint(validatedBy = {CriteriaValidator.class})
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE , ElementType.FIELD, ElementType.PARAMETER})
public @interface ValidCriteria {
String message() default "{Criteria.Invalid}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}

上面的模型作为方法的输入参数传入,该方法也使用@Valid和@ValidCriteria进行注释。

public void update(@Valid @ValidCriteria Criteria criteria){...}

我遇到的问题是方法中的 2 个注释。我必须添加 @Valid 才能检查类中注释的约束。我的自定义 validator 仅检查以下两个字段之一是否存在:文件名或小时数。

我的问题是,如何使用单个注释 @ValidCriteria 来验证我的特殊要求以及对象中的 @NotEmpty 字段。

我尝试在自定义约束 @ValidCriteria 中添加 @Valid,但是收到错误“@Valid 不适用于注释类型”

最佳答案

@ValidCriteria 注释应该位于 Criteria 类上:

@ValidCriteria
class Criteria{
@NotEmpty String id;
@NotEmpty String name;
String fileName;
String hours;
}

关于Java 验证 - 将 @Valid 约束添加到自定义约束会引发 "@Valid is not applicable to annotation type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23976551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com