univocity 能否以 OR 方式而不是 AND 方式执行验证器?

Can univocity execute validators in OR way insted of AND?

我想知道是否有任何方法可以用 OR 运算符代替 AND 来执行验证器。目前,如果第一个失败,他不会 运行 其他两个,但是我需要他 运行 将它们全部 return 给用户他应该应用到的所有相应修复文件。

我有类似的东西:

@Validate(nullable = false, validators = { NumericValidator.class, LengthValidator.class, DataValidator.class })

我没有创建单个验证,因为我想创建一般验证,只是根据字段调用特定验证。

提前致谢。

我解决了建立一个 class 喜欢

import java.util.HashSet;
import java.util.Set;

import com.univocity.parsers.conversions.Validator;

import co.com.app.constantes.Constants;

public class CustomValidator implements Validator<Object> {

protected Set<Validator<Object>> validators = new HashSet<>();

public CustomValidator() {
    super();
}

@Override
public String validate(Object value) {
    Set<String> errors = new HashSet<>();

    validators.forEach(validator -> {
        String error = validator.validate(value);

        if (error != null) {
            errors.add(error);
        }
    });

    if (errors.isEmpty()) {
        return null;
    }

    return String.join(Constants.COMMA, errors);
    }

}

然后我创建一个像

这样的验证器
public class FieldValidator extends CustomValidator {
    public FieldValidator() {
        validators.add(new NumericValidator());
        validators.add(new LengthValidator(1, 11));
    }

}

在 DTO 中我使用了类似

的东西
@Parsed(index = 0)
@NullString(nulls = { Constants.NULL_VALUE, Constants.EMPTY_VALUE })
@Validate(nullable = false, validators = { FieldValidator.class })
private Long field;