如何结合验证两个或多个字段?在方法中

问题描述 投票:0回答:1

我希望你很好。

现在,我正在开发一种自定义注释,以这种方式验证方法中的参数:

接口:

@Target({METHOD})
@Retention(RUNTIME)
@Constraint(validatedBy = ValidarImpl.class)
public @interface Validar {
    public abstract String message() default "ERROR VALIDATION";
    public abstract Class<?>[] groups() default {};
    public abstract Class<? extends Payload>[] payload() default {};
}

Class:

public class ValidarImpl implements ConstraintValidator<Validar, Object> {

    @Override
    public boolean isValid(Object value, ConstraintValidatorContext context) {

        return false;
    }

}

注释的实现:

@Validar 
public void method1 (@Positive int value, @Valid Car car){}

我正在尝试从ConstraintValidatorContext类中获取参数的名称及其值,目的是验证method1方法的参数,但是我还无法做到这一点

我想做这样的事情:How can I validate two or more fields in combination?和方法。

感谢您的帮助。

java spring validation
1个回答
0
投票
您可以参考https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/?v=6.1#section-cross-parameter-constraints以获取更多详细信息。

您可以如下更改代码:

@SupportedValidationTarget(ValidationTarget.PARAMETERS) public class ValidarImpl implements ConstraintValidator < Validar, Object[] > { @Override public boolean isValid(Object[] value, ConstraintValidatorContext context) { if (value.length != 2) { throw new IllegalArgumentException("Illegal method signature"); } if (value[0] == null || value[1] == null) { return true; } } }

© www.soinside.com 2019 - 2024. All rights reserved.