Ich kann keine @UUID
(oder ähnliche) Annotation zur Validierung von Eingabeparametern in einer Java Web App finden.Gibt es eine Uuid-Validator-Annotation?
Ich habe in
- javax.validation.constraints
- org.hibernate.validator.constraints bisher sah
Ich kann keine @UUID
(oder ähnliche) Annotation zur Validierung von Eingabeparametern in einer Java Web App finden.Gibt es eine Uuid-Validator-Annotation?
Ich habe in
ja, bauen es selbst
@Target(ElementType.FIELD)
@Constraint(validatedBy={})
@Retention(RUNTIME)
@Pattern(regexp="^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$")
public @interface UUID {
String message() default "{invalid.uuid}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
Danke @ Jaiwo99 Ich hatte gehofft, dass die Validierung von Uuids genug ist, so dass es bereits in Bibliotheken enthalten ist und ich nicht muss das Rad neu erfinden ... –
Die Lösung von Jaiwo99 funktioniert, aber ich konnte keine benutzerdefinierte Nachricht von außen setzen (sie wird von der Nachricht von @Pattern
). Wenn Sie, dass, schlage ich vor, dass Sie einfach so etwas wie folgt verwenden:
@Pattern(regexp = SomeUtilClass.UUID_PATTERN, message = "TokenFormatError")
private String token;
Sie das Muster in einem gewissen statischen Endfeld Doppelarbeit vermeiden setzen können:
public static SomeUtilClass {
public static final String UUID_PATTERN = "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$";
}
Wenn Sie die Validierung vornehmen möchten auf * * @ RestController ** Endpunkt, dann denke ich, einfacher ist es, nur den ** java.util.UUID ** Typ zu erwarten. Wenn es nicht möglich ist, den Wert von HTTP-Anfrage zu gültiger UUID abzubilden, dann lehnen Sie einfach die Anfrage ab :) –