找不到自定义 Java Bean 验证器约束的验证器
No validator could be found for constraint for Custom Java Bean Validator
我使用此处的说明创建了一个新的自定义验证器:
https://docs.jboss.org/hibernate/validator/4.1/reference/en-US/html/validator-customconstraints.html#validator-customconstraints-validator
public class CustomizableTypeValidator implements ConstraintValidator<CustomValidate, CustomValidator> {
@Override
public void initialize(final CustomValidate customValidate) {
}
@Override
public boolean isValid(final CustomValidator customValidator, final ConstraintValidatorContext constraintValidatorContext) {
if ( customValidator == null ) {
return true;
}
return customValidator.isValid(constraintValidatorContext);
}
}
但得到:
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'com.amazon.mft.data.api.v1.CustomValidate' validating type 'com.amazon.mft.data.api.v1.CustomValidator'. Check configuration for 'transactionEntries[0].record.attributesObj'
我正在使用以下方法创建验证器:
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
并调用它:
validator.validate(obj)
我需要做什么才能将自定义验证器添加到它正在执行的其他验证中。我正在使用 Hibernate Validator 5.2.4。
回答我自己的问题:
添加 AutoService 注释修复它:
import com.google.auto.service.AutoService;
@AutoService(ConstraintValidator.class)
public class CustomizableTypeValidator implements ConstraintValidator<CustomValidate, CustomValidator> {
@Override
public void initialize(final CustomValidate customValidate) {
}
@Override
public boolean isValid(final CustomValidator customValidator, final ConstraintValidatorContext constraintValidatorContext) {
if ( customValidator == null ) {
return true;
}
return customValidator.isValid(constraintValidatorContext);
}
}
我使用此处的说明创建了一个新的自定义验证器: https://docs.jboss.org/hibernate/validator/4.1/reference/en-US/html/validator-customconstraints.html#validator-customconstraints-validator
public class CustomizableTypeValidator implements ConstraintValidator<CustomValidate, CustomValidator> {
@Override
public void initialize(final CustomValidate customValidate) {
}
@Override
public boolean isValid(final CustomValidator customValidator, final ConstraintValidatorContext constraintValidatorContext) {
if ( customValidator == null ) {
return true;
}
return customValidator.isValid(constraintValidatorContext);
}
}
但得到:
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'com.amazon.mft.data.api.v1.CustomValidate' validating type 'com.amazon.mft.data.api.v1.CustomValidator'. Check configuration for 'transactionEntries[0].record.attributesObj'
我正在使用以下方法创建验证器:
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
并调用它:
validator.validate(obj)
我需要做什么才能将自定义验证器添加到它正在执行的其他验证中。我正在使用 Hibernate Validator 5.2.4。
回答我自己的问题: 添加 AutoService 注释修复它:
import com.google.auto.service.AutoService;
@AutoService(ConstraintValidator.class)
public class CustomizableTypeValidator implements ConstraintValidator<CustomValidate, CustomValidator> {
@Override
public void initialize(final CustomValidate customValidate) {
}
@Override
public boolean isValid(final CustomValidator customValidator, final ConstraintValidatorContext constraintValidatorContext) {
if ( customValidator == null ) {
return true;
}
return customValidator.isValid(constraintValidatorContext);
}
}