2012-05-17 10 views
5

Mam podmiot o nazwie użytkownika i chcę, aby zweryfikować numer pola mobilnąPotwierdzić numer telefonu komórkowego za pomocą hibernacji adnotacji

polu Numer mobilnej nie jest obowiązkowe, może być pusta, ale powinna być numer 10 cyfr.

Jeśli użytkownik wprowadzi dowolną wartość długości mniejszej niż 10 cyfr długości, wówczas powinien zostać zgłoszony błąd.

Poniżej znajduje się moja klasa użytkownika.

public class User { 

    @Size(min=0,max=10) 
    private String mobileNo; 

} 

Kiedy użyłem @Sized adnotacji, jak wspomniano powyżej, mogę potwierdzić wartości, które były większe niż 10, ale jeśli użytkownik wszedł mniej niż 10 cyfr bez błędu została podniesiona.

Moim żądaniem jest, jeśli użytkownik opuścił puste pole mobileNo, ale jeśli wprowadzono wartość, to walidacja powinna zapewnić, że wprowadzony numer zawiera tylko 10 cyfr i 10 cyfr.

Którą adnotację powinienem użyć dla tego wymogu?

Odpowiedz

17

@Size(min=10,max=10) wykona zadanie, jeśli puste będzie zero.

Jeśli nie wstawisz adnotacji o wartości @NotNull, wartość zostanie przekazana do sprawdzenia poprawności.

Jeśli puste oznacza ciąg pusty wtedy trzeba użyć @Pattern walidator:

@Pattern(regexp="(^$|[0-9]{10})") 

to pasuje albo pusty ciąg znaków lub 10 liczbę cyfr.

+0

Ale ponieważ większość ramek MVC będzie wiązać pusty łańcuch do pola, gdy odpowiednie pole tekstowe pozostanie puste, to może faktycznie nie rozwiązać problemu. Rozwiązałem bardzo podobny problem, pisząc własne adnotacje walidacyjne. Inną rzeczą, którą można rozważyć, jest użycie @Pattern i wyrażenie regularne do sprawdzenia poprawności pola. –

+0

W jaki sposób możemy sprawdzić, czy numer telefonu nie zawiera łączników? W przypadku Ex: 012-345-6789 wartości te powinny zostać zatwierdzone. –

3

Być może możesz ulepszyć sugerowaną odpowiedź za pomocą kodu libphonenumber z Google Code, aby sprawdzić swoje numery telefonu.

+0

To wygląda na wspaniałą bibliotekę. Sprawdza to, aby sprawdzić i przekonwertować liczby. – djmj

+0

Tak, jest! Oczywiście, że możesz! – ThierryB

Powiązane problemy