Non riesco a trovare un'annotazione @UUID
(o simile) per la convalida dei parametri di input in un'app web java.Esiste un'annotazione del validatore uuid?
Ho guardato finora in
- javax.validation.constraints
- org.hibernate.validator.constraints
Non riesco a trovare un'annotazione @UUID
(o simile) per la convalida dei parametri di input in un'app web java.Esiste un'annotazione del validatore uuid?
Ho guardato finora in
Sì, costruire da soli
@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 {};
}
Grazie @ Jaiwo99 Speravo che la convalida di uuid fosse abbastanza comune in modo che fosse già inclusa nelle librerie e io non bisogno di reinventare la ruota ... –
La soluzione di Jaiwo99 funziona, ma non sono riuscito a impostare un messaggio personalizzato dall'esterno (è sovrascritto dal messaggio da @Pattern
). Se avete bisogno di questo, propongo di utilizzare semplicemente qualcosa di simile:
@Pattern(regexp = SomeUtilClass.UUID_PATTERN, message = "TokenFormatError")
private String token;
Si può mettere il modello in qualche campo finale statico per evitare duplicazioni:
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}$";
}
Se si vuole fare convalida * * @ Endpoint RestController **, penso che sia più facile aspettarsi solo il tipo ** java.util.UUID **. Se non sarà possibile mappare il valore dalla richiesta HTTP a UUID valido, allora basta rifiutare la richiesta :) –