Ich verwende Bean-Validierung in meinem Projekt und ich möchte einen benutzerdefinierten Validator für eine vorhandene Constraint-Annotation schreiben.Registrieren Sie benutzerdefinierte ConstraintValidator für vorhandene Constraint
Zum Beispiel habe ich eine Klasse, die ein Datum/Uhrzeit mit dem Namen CustomDateTime
darstellt. In einer Klasse, die diese Klasse als zum Beispiel das Datum der Geburt verwendet würde ich das Feld zu annotieren gerne mit @Past
:
public class Person
{
@Past
private CustomDateTime dateOfBirth;
}
Ich erstelle dann einen benutzerdefinierten Validator durch ConstraintValidator<Past, CustomDateTime>
implementieren. Dies funktioniert jedoch nicht, da die Validierungsimplementierung den benutzerdefinierten Validator nicht kennt. Es wirft dann: javax.validation.UnexpectedTypeException: No validator could be found for type: com.example.CustomDateTime
.
Ich weiß, dass Sie in der Regel eine separate Anmerkung wie folgt erstellen:
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {CustomDateTimePastValidator.class})
public @interface Past
{
....
}
Aber das scheint wie Doppelcode zu mir ;-)
Wie kann ich den benutzerdefinierten Validator registrieren @Past
verwendet werden soll ?
@ siebz0r Hat es für dich funktioniert? –