UniVocity 如何将参数添加到自定义验证器
UniVocity howto add parameters to a custom Validator
我正在为 univocity 解析器创建一些自定义验证器,我想添加一些这样的参数:
public class Size implements Validator<String>
int max;
然后像这样使用它:
@Parsed
@Validate(nullable = false, validators = Size.class(8) )
private String someString;
我没有找到类似这样的内容或带注释的示例。
也许使用 javax.validation 注释?
或者注入使用范围限制构造函数创建的 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 - 扩展 class ValidatedConversion
并在 @Convert
注释上使用 class:
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;
希望对您有所帮助。
我正在为 univocity 解析器创建一些自定义验证器,我想添加一些这样的参数:
public class Size implements Validator<String>
int max;
然后像这样使用它:
@Parsed
@Validate(nullable = false, validators = Size.class(8) )
private String someString;
我没有找到类似这样的内容或带注释的示例。
也许使用 javax.validation 注释?
或者注入使用范围限制构造函数创建的 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 - 扩展 class ValidatedConversion
并在 @Convert
注释上使用 class:
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;
希望对您有所帮助。