java - UniVocity 如何向自定义 validator 添加参数

标签 java validation univocity

我正在为 univocity 解析器创建一些自定义 validator ,我想添加一些如下参数:

   public class Size implements Validator<String>
   int max;

然后像这样使用它:

   @Parsed
   @Validate(nullable = false, validators = Size.class(8) )
   private String someString;

我没有找到类似的内容或带注释的示例。

也许使用 javax.validation 注释?

或者可能注入(inject)使用范围限制构造函数创建的 sizeValidation 对象?

谢谢!

最佳答案

这里有两个选项:

1 - 在setter上添加注释(简单但不可重用:

    @Parsed
    @Validate(nullable = false)
    public void setSomeString(String value){
        if(value.length() < 3 || value.length() > 5){
            throw new DataValidationException("SomeString can't have length " + value.length());
        }
        this.someString = value;
    }

2 - 扩展类 ValidatedConversion 并在 @Convert 注释上使用该类:

public class LengthValidator extends ValidatedConversion {

    private int min;
    private int max;

    public LengthValidator(String... args) {
        super(false, false); //not null / not blank
        this.min = Integer.parseInt(args[0]);
        this.max = Integer.parseInt(args[1]);
    }

    @Override
    protected void validate(Object value) {
        super.validate(value); //let super check for null and whatever you need.
        String string = value.toString();
        if(string.length() < min || string.length() > max){
            throw new com.univocity.parsers.common.DataValidationException("Value can't have length " + string.length());
        }
    }
}

然后将其添加到您的属性中:

    @Parsed
    @Convert(conversionClass = LengthValidator.class, args = {"3", "5"})
    private String someString;

希望这有帮助。

关于java - UniVocity 如何向自定义 validator 添加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55403794/

相关文章:

java - 如何使用 java 将最后 10 个最新文件保留在目录中?

javascript - "$(...).validate is not a function"即使我直接将 jquery.validate.js 代码放在 head 中

java - univocity 基于动态列映射将 csv 解析为相同的 pojo

java - 在 java 中使用 univocity 库解析 CSV

scala - 使用Spark CSV软件包读取非常大的文件时出错

Java:泛型类型类型不匹配语法错误

java - 如何在Java中循环一个简单的程序?

java - 狮身人面像4 : getting null pointer exception at connection manager

javascript - 如何使用 JavaScript 在 Firefox 中将必需的 radio 输入设为可选?

c# - Wpf DatePicker 启动时验证错误