Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为“javax.validation.constraints”注释添加自定义验证器?_Java_Bean Validation_Spring Validator - Fatal编程技术网

如何为“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();