为了账号安全,请及时绑定邮箱和手机立即绑定

UniVocity 如何将参数添加到自定义验证器

UniVocity 如何将参数添加到自定义验证器

白衣染霜花 2022-09-07 20:54:27
我正在为单声解析器创建一些自定义验证器,我想添加一些参数,如下所示:   public class Size implements Validator<String>   int max;然后像这样使用它:   @Parsed   @Validate(nullable = false, validators = Size.class(8) )   private String someString;我没有找到类似的东西或带有注释的示例。也许使用javax.validation注释?或者注入使用范围限制构造函数创建的 sizeValidation 对象?谢谢!
查看完整描述

1 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

这里有两个选项:


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;

希望这有帮助。


查看完整回答
反对 回复 2022-09-07
  • 1 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信