首页 > 解决方案 > Dropwizard:1.X - 我可以让跨参数方法验证工作吗?

问题描述

注解:

@Target({METHOD, CONSTRUCTOR, PARAMETER, FIELD})
@Documented
@Constraint(validatedBy = AtLeastOneNotNullValidator.class)
@Retention(RUNTIME)
public @interface AtLeastOneNotNull {

    String message () default "{com.validationError}";

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

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

    String[] fieldNames();
}

验证器(目前总是false故意返回):

@SupportedValidationTarget(ValidationTarget.PARAMETERS)
public class AtLeastOneNotNullValidator implements ConstraintValidator<AtLeastOneNotNull, String[]> {

    private String[] fieldNames;

    @Override
    public void initialize(AtLeastOneNotNull constraintAnnotation) {
        this.fieldNames = constraintAnnotation.fieldNames();
    }

    @Override
    public boolean isValid(String[] value, ConstraintValidatorContext context) {
        return false;
    }

}

方法:

    // within some class
    @Valid
    @AtLeastOneNotNull(fieldNames = {"userName", "companyName"})
    private List<SomeObj> findAll(@Valid String userName, @Valid String companyName, String token) {...}

无论如何,我似乎无法让它发挥作用。我错过了什么?

标签: javadropwizardbean-validation

解决方案


推荐阅读