Uso la convalida del bean nel mio progetto e mi piacerebbe scrivere un validatore personalizzato per un'annotazione di vincolo esistente.Registrare vincolo personalizzato per vincolo esistente
Ad esempio, ho una classe che rappresenta una data/ora denominata CustomDateTime
. In una classe che utilizza questa classe come ad esempio la data di nascita vorrei annotare il campo con @Past
:
public class Person
{
@Past
private CustomDateTime dateOfBirth;
}
Ho quindi creare un validatore personalizzato implementando ConstraintValidator<Past, CustomDateTime>
. Ciò tuttavia non funziona, poiché l'implementazione della convalida non ha alcuna conoscenza del validatore personalizzato. Quindi getta: javax.validation.UnexpectedTypeException: No validator could be found for type: com.example.CustomDateTime
.
So che di solito si crea un'annotazione distinta come questo:
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {CustomDateTimePastValidator.class})
public @interface Past
{
....
}
ma che sembra doppio codice per me ;-)
Come posso registrare il validatore personalizzato da utilizzare con @Past
?
@ siebz0r Ha funzionato per te? –