亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號