我試圖定義與Hibernate驗證6.0.1約束定義在驗證處於不同的位置(的.jar /項目)相對於約束註釋。也就是說,我有我的對象,我想驗證是在項目「api」與註釋定義,但我將有項目中的驗證器「模塊/普通」配置自定義驗證與驗證扶養注射
我是按照所描述的the documentation。
配置文件
@Bean
public Validator validator() {
HibernateValidatorConfiguration configuration = Validation
.byProvider(HibernateValidator.class)
.configure();
ConstraintMapping constraintMapping = configuration.createConstraintMapping();
constraintMapping
.constraintDefinition(ValidationComplexePerson.class)
.validatedBy(ValidationComplexePersonValidator.class);
return configuration.addMapping(constraintMapping)
.buildValidatorFactory()
.getValidator();
約束註釋
@Documented
@Constraint(validatedBy = { })
@Target({TYPE, ANNOTATION_TYPE})
@Retention(RUNTIME)
public @interface ValidationComplexePerson {
...}
驗證
public class ValidationComplexePersonValidator
implements ConstraintValidator<ValidationComplexePerson, Personne> {
@Override
public void initialize(ValidationComplexePerson constraintAnnotation) {
}
@Override public boolean isValid(
Personne personne,
ConstraintValidatorContext constraintValidatorContext) {
if (personne.nom.matches(".*\\d+.*")) {
return false;
}
return true;
}
我的問題 我的問題是,如果我不把「@Constraint(validatedby = {})」中的註釋,我得到的錯誤
HV000116: The annotation type must be annotated with @javax.validation.Constraint when creating a constraint definition.
達到」 .constraintDefinition時「在Bean配置中。
在另一方面,如果我把「@Constraint(validatedby = {})」,我得到
Error:(17, 1) java: For non-composed constraints a validator implementation must be specified using @Constraint#validatedBy().
上,這可能是撥錯或替代這一解決方案的任何建議?
我也嘗試過的程序提出here。
這樣做的竅門,我不知道我是否需要它! –
這很有用,因爲它提供瞭如何使用HV的提示。但我們確實需要它不會爲有效配置拋出錯誤。 –