我在我的项目中使用 bean-validation,我想为现有的约束注释编写一个自定义验证器。
例如,我有一个代表日期/时间的类,名为CustomDateTime
. 在使用此类作为例如出生日期的类中,我想用以下方式注释该字段@Past
:
public class Person
{
@Past
private CustomDateTime dateOfBirth;
}
然后我通过实现来创建一个自定义验证器ConstraintValidator<Past, CustomDateTime>
。然而这不起作用,因为验证实现不知道自定义验证器。然后它抛出:javax.validation.UnexpectedTypeException: No validator could be found for type: com.example.CustomDateTime
。
我知道您通常会像这样创建一个单独的注释:
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {CustomDateTimePastValidator.class})
public @interface Past
{
....
}
但这对我来说似乎是双重代码;-)
如何注册要使用的自定义验证器@Past
?