如何为“javax.validation.constraints”注释添加自定义验证器?
我已经实施了长字段和当前验证的验证如何为“javax.validation.constraints”注释添加自定义验证器?,java,bean-validation,spring-validator,Java,Bean Validation,Spring Validator,我已经实施了长字段和当前验证的验证 public class PastOrPresentValidator implements ConstraintValidator<PastOrPresent, Long>{ @Override public boolean isValid(Long value, ConstraintValidatorContext context) { if (value == null) { retur
public class PastOrPresentValidator implements ConstraintValidator<PastOrPresent, Long>{
@Override
public boolean isValid(Long value, ConstraintValidatorContext context) {
if (value == null) {
return false;
}
return value <= System.currentTimeMillis();
}
}
public class MyDto {
@PastOrPresent
Long timestamp;
}
但是,当我创建自定义注释(如@PastOrPresentLong)并使用相同的验证程序代码时,一切都正常
有没有办法为javax.validation.constraints注释添加自定义验证器 仅实现ConstraintValidator接口不足以让新的验证器工作。它应该以某种方式注册,以便BeanValidation提供者知道它。这可以通过XML完成。有关更多信息,请参见:
然后将此约束映射添加到配置中,并从中创建验证程序:
Validator validator = configuration.addMapping( constraintMapping )
.buildValidatorFactory()
.getValidator();
但正如我前面提到的,服务加载器是最简单、最快捷的方法。仅实现ConstraintValidator接口不足以让新的验证器工作。它应该以某种方式注册,以便BeanValidation提供者知道它。这可以通过XML完成。有关更多信息,请参见:
然后将此约束映射添加到配置中,并从中创建验证程序:
Validator validator = configuration.addMapping( constraintMapping )
.buildValidatorFactory()
.getValidator();
但正如我前面提到的,服务加载器是最简单、最快捷的方法。我认为你应该接受这个精彩的答案。我认为你应该接受这个精彩的答案。
ConstraintMapping constraintMapping = configuration.createConstraintMapping();
constraintMapping
.constraintDefinition( PastOrPresent.class )
.validatedBy( PastOrPresentLongValidator.class );
Validator validator = configuration.addMapping( constraintMapping )
.buildValidatorFactory()
.getValidator();