[英]Implement Java annotations for validation
我想從org.hibernate.validator.internal.constraintvalidators.
調用Validator org.hibernate.validator.internal.constraintvalidators.
手動為一個值賦值,因為我無法注釋該類。 我所做的是這樣的:
LengthValidator validator = new LengthValidator();
validator.initialize(new Length() {
@Override
public Class<? extends Annotation> annotationType() {
return null;
}
@Override
public Class<? extends Payload>[] payload() {
return null;
}
@Override
public int min() {
return min == null ? defaultMin : min;
}
@Override
public String message() {
return null;
}
@Override
public int max() {
return max == null ? defaultMax : max;
}
@Override
public Class<?>[] groups() {
return null;
}
});
Boolean valid = validator.isValid(myValue.asText(), null));
但是聲納並不高興:
Lambda和匿名類不應包含太多行
所以我試圖通過在這樣的自定義類中實現@Length來重構此代碼:
public class StringLength implements Length {
// All the methods overriden from @Length
}
但是編譯器抱怨
注釋類型Length不應該用作StringLength的超級接口
我該如何實現自己的目標?
請注意,不鼓勵使用內部類,但是如果您確實願意,可以使用Hibernate Validator AnnotationFactory
:
AnnotationDescriptor<Length> descriptor = new AnnotationDescriptor<Length>( Length.class );
descriptor.setValue( "min", 0 );
descriptor.setValue( "max", 10 );
...
Length lengthAnnotation = AnnotationFactory.create( descriptor );
不過,我不確定,使用LengthValidator
會獲得什么。 您仍然不能使用Validator框架,對嗎? 如果您不能注釋該類,則可以不使用XML配置嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.