gpt4 book ai didi

java - 如何在自定义约束 validator 中使用注释元素

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:10:28 26 4
gpt4 key购买 nike

我在名为 CGC 的项目中写了一个自定义注释:

@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = CGCValidator.class)
public @interface CGC {
String message() default "{person.cgc.error}";

Class<?>[] groups() default {};

Class<? extends Payload>[] payload() default {};

boolean canBeNull() default false;

@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
public @interface List {
CGC[] value();
}
}

我有一个使用注释的 validator 类,基本上,作为我的第一次验证,我想检查该字段是否为空,但前提是该字段的注释已将“canBeNull”元素指定为 true (@CGC(canBeNull =“真”))。我的问题是:如何访问 validator 类中的 canBeNull 元素?

* validator 应该是这样的:

public class CGCValidator implements ConstraintValidator<CGC, String> {

@Override
public void initialize(CGC annotation) {
}

@Override
public boolean isValid(String cgc, ConstraintValidatorContext constraintValidatorContext) {
if(!canBeNull() && cgc == null) {
return false;
}
...

最佳答案

可以在初始化函数中捕获canBeNull值:

class CGCValidator implements ConstraintValidator<CGC, String> {

boolean canBeNull;

@Override
public void initialize(CGC constraintAnnotation) {
canBeNull = constraintAnnotation.canBeNull();
}

@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
return canBeNull || value != null;
}
}

关于java - 如何在自定义约束 validator 中使用注释元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29541126/

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