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;
我想知道是否有任何方法可以用 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;