2016-05-19 13 views
8

Nie mogę znaleźć adnotacji @UUID (lub podobnej) do sprawdzania poprawności parametrów wejściowych w aplikacji internetowej Java.Czy istnieje adnotacja weryfikatora uuid?

szukałem tej pory w

  1. javax.validation.constraints
  2. org.hibernate.validator.constraints
+0

Jeśli chcesz dokonać walidacji na * * @ RestController ** endpoint wtedy myślę, że łatwiej jest po prostu oczekiwać ** typu java.util.UUID **. Jeśli nie będzie możliwe odwzorowanie wartości z żądania HTTP na prawidłowy UUID, to sprężyna po prostu odmówi wykonania żądania :) –

Odpowiedz

12

tak, zbudować go samemu

@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 {}; 
} 
+2

Dziękuję @ Jaiwo99 Miałem nadzieję, że sprawdzanie poprawności uuidów jest na tyle powszechne, że jest już zawarte w bibliotekach, a ja nie trzeba wymyślić koło ... –

4

Rozwiązanie z Jaiwo99 działa, ale nie byłem w stanie ustawić niestandardowego komunikatu z zewnątrz (jest on nadpisywany przez wiadomość od @Pattern). Jeśli trzeba, że ​​proponuję po prostu użyć coś takiego:

@Pattern(regexp = SomeUtilClass.UUID_PATTERN, message = "TokenFormatError") 
private String token; 

można umieścić wzór w jakimś statycznym polu końcowego, aby uniknąć dublowania:

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}$"; 
} 
Powiązane problemy