我试图定义与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的提示。但我们确实需要它不会为有效配置抛出错误。 –