2012-05-17 9 views
5

Ich habe eine Entität namens User und ich möchte ein Handy-Nummer Feld Feld istValidate Mobile Number mit Hibernate Annotations

die Mobiltelefonnummer validieren nicht zwingend es leer gelassen werden kann, aber es sollte eine 10-stellige Zahl.

Wenn der Benutzer einen Wert weniger als 10 Ziffern in der Länge eingibt, sollte ein Fehler ausgelöst werden.

Unten ist meine Benutzerklasse.

public class User { 

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

} 

Als ich noch @Sized Anmerkung, wie oben erwähnt, könnte ich Werte bestätigen, die größer als 10 waren, aber wenn der Benutzer eingegeben weniger als 10 Stellen kein Fehler ausgelöst wurde.

Meine Anforderung ist, wenn der Benutzer das Feld mobileNo leer gelassen hat, das gültig ist, aber wenn ein Wert eingegeben wird, sollte die Validierung sicherstellen, dass die eingegebene Zahl 10 Ziffern und nur 10 Ziffern ist.

Welche Anmerkung sollte ich für diese Anforderung verwenden?

Antwort

17

@Size(min=10,max=10) würde die Arbeit tun, wenn durch Leerzeichen Sie Null bedeuten. Wenn Sie @NotNull Annotation nicht setzen, würde null Wert Validierung übergeben

Wenn leer bedeutet leer String dann müssen Sie @Pattern Validator verwenden:

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

diese entweder leere Zeichenkette oder 10-stellige Nummer übereinstimmt.

+0

Da jedoch die meisten MVC-Frameworks eine leere Zeichenfolge an ein Feld binden, wenn das entsprechende Textfeld leer bleibt, kann das Problem dadurch möglicherweise nicht gelöst werden. Ich habe ein sehr ähnliches Problem angesprochen, indem ich meine eigenen Validierungsannotationen geschrieben habe. Eine andere Sache, die Sie in Betracht ziehen könnten, ist die Verwendung eines @Pattern und eines regulären Ausdrucks, um das Feld zu validieren. –

+0

Wie können wir überprüfen, ob die Telefonnummer keine Bindestriche dazwischen hat? Für Beispiel: 012-345-6789 sollten solche Werte validiert werden –

3

Vielleicht könnten Sie die vorgeschlagene Antwort mit der Verwendung von libphonenumber von Google Code verbessern, um Ihre Telefonnummern zu überprüfen.

+0

Das sieht wie eine große Bibliothek aus. Wird es überprüfen, um Zahlen zu validieren und zu konvertieren. – djmj

+0

Ja ist es! Natürlich kannst du! – ThierryB

Verwandte Themen