6

我在我的项目中使用 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

4

1 回答 1

5
于 2013-01-14T20:27:55.283 回答