Я использую bean-валидацию в своем проекте, и я хотел бы написать собственный валидатор для существующей аннотации ограничения.
Например, у меня есть класс, представляющий дату/время с именем 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
?