Ich kann nicht scheinen, eine Zusammenfassung zu finden, die den Unterschied zwischen diesen drei Anmerkungen unterscheidet.In Hibernate Validator 4.1 +, was ist der Unterschied zwischen @NotNull, @NotEmpty und @NotBlank?
Antwort
@NotNull
: Die CharSequence, Sammlung, Karte oder Array-Objekt ist nicht null, aber kann leer sein.
@NotEmpty
: Das Objekt CharSequence, Collection, Map oder Array ist nicht null und Größe> 0.
@NotBlank
: Die Zeichenfolge ist nicht null und die getrimmte Länge ist größer als Null.
Ihnen dabei helfen zu verstehen, wollen wir in aussehen wie diese Zwänge definiert und ausgeführt werden (Ich bin mit Version 4.1):
Die
@NotNull
Einschränkung ist definiert als:@Constraint(validatedBy = {NotNullValidator.class})
Diese Klasse hat eine
isValid
Methode definiert als:public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) { return object != null; }
Die
@NotEmpty
Einschränkung ist definiert als:@NotNull @Size(min = 1)
Also diese Einschränkung verwendet die
@NotNull
über Einschränkung, und@Size
deren Definition unterscheidet sich die Aufgabe zugrunde, sondern sollte selbsterklärend sein.Schließlich ist die
@NotBlank
Einschränkung ist definiert als:@NotNull @Constraint(validatedBy = {NotBlankValidator.class})
Also diese Einschränkung auch verwendet die
@NotNull
Einschränkung, sondern auch mit der NotBlankValidator Klasse beschränkt. Diese Klasse hat eineisValid
Methode wie folgt definiert:if (charSequence == null) { //curious return true; } return charSequence.toString().trim().length() > 0;
Interessanterweise ist diese Methode gibt true zurück, wenn die Zeichenfolge null sind, aber falsch, wenn und nur dann, wenn die Länge der beschnittenen Saite ist 0. Es ist in Ordnung, dass es wahr zurück, wenn es ist null, weil, wie ich bereits erwähnte, die
@NotEmpty
Definition auch@NotNull
erfordert.
Hier sind ein paar Beispiele:
String name = null;
@NotNull
: false
@NotEmpty
: false
@NotBlank
: falseString name = "";
@NotNull
: wahr
@NotEmpty
: false
@NotBlank
: falseString name = "„;
@NotNull
: wahr
@NotEmpty
: wahr
@NotBlank
: falseString name = "Great Antwort!";
@NotNull
: wahr
@NotEmpty
: wahr
@NotBlank
: wahr
mir die Erklärung in dem unten stehenden Link gefallen: http://www.itprogrammingtutorials.com/2015/java/hibernate/hibernate-validator-diff-notblank-notempty/
@NotNull: überprüft, ob der Wert ist nicht null, abgesehen von dem Inhalt
@NotEmpty: Prüft, ob der Wert nicht null oder leer ist. Wenn es nur leere Leerzeichen hat, wird es als nicht leer zulassen.
@NotBlank: Prüft, ob der Wert nicht null oder leer ist, und kürzt den Wert zuerst ab. Es bedeutet, dass es nicht nur leere Räume erlaubt.
Also, wenn Sie validieren möchten, dass ein Feld nicht null ist, aber auch, dass es nicht nur leere Leerzeichen, sondern Text enthält, sollten Sie @NotBlank verwenden.
- 1. Wird Hibernate Validator @NotNull immer zuerst ausgelöst?
- 2. Was ist der Unterschied zwischen Taschen und Listen in Hibernate?
- 3. , was der Unterschied zwischen Hibernate 2.X und Hibernate 3.0
- 4. Hibernate @NotEmpty Annotationsäquivalent in Javax.package oder alternativ
- 5. Was ist der Unterschied zwischen `==` und `ist`?
- 6. Hibernate Validator Custom Constraint hängt von der Basisklasse ab
- 7. Was ist der Unterschied zwischen/* ... */und/** ... */
- 8. Was ist der Unterschied zwischen + = und = +?
- 9. Was ist der Unterschied zwischen $ (()) und Ausdruck?
- 10. Was ist der Unterschied zwischen:.! und: r !?
- 11. Was ist der Unterschied zwischen Verilog! und ~?
- 12. Was ist der Unterschied zwischen Difftime und '-'?
- 13. Was ist der Unterschied zwischen $ und $$?
- 14. was ist der Unterschied zwischen [[], []] und [[]] * 2
- 15. Was ist der Unterschied zwischen `&` und `ref`?
- 16. Was ist der Unterschied zwischen $ (...) und `...`
- 17. Was ist der Unterschied zwischen .Equals und ==
- 18. Was ist der Unterschied zwischen "$^N" und "$ +"?
- 19. Was ist der Unterschied zwischen? und ? = Nil
- 20. Was ist der Unterschied zwischen:
- 21. Hibernate @OneToOne @NotNull
- 22. Unterschied zwischen Hibernate und Hibernate JPA
- 23. Was ist der Unterschied zwischen Managed Bean und Spring Controller?
- 24. Was ist der Unterschied zwischen JPA und JDO Spezifikationen?
- 25. Was ist der Unterschied zwischen: und :: und ::: in Javascript Grammatik
- 26. Was ist der Unterschied zwischen add und [] in der Wörterbuchoperation
- 27. Was ist der Unterschied zwischen `-Contains` und` -In` in PowerShell?
- 28. Was ist der Unterschied zwischen 'getDelegate()' und 'unwrap()' zum Abrufen der Hibernate-Sitzung eines Entity Managers
- 29. Was ist der Unterschied zwischen primitiven und Wrapper-Klasse in JPA (Hibernate) Spaltenzuordnungen?
- 30. Unterschied zwischen FlushMode.AUTO und FlushMode.ALWAYS in Hibernate?
Ich verbrachte einige Zeit damit, diese Informationen selbst zu verfolgen, und ich wollte anderen helfen, von diesen Bemühungen zu profitieren. "Um ganz klar zu sein, ist es nicht nur OK, deine eigene Frage zu stellen und zu beantworten, sie wird ausdrücklich ermutigt." http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ –
Meiner Meinung nach sollte @NotBlank akzeptieren null. In einigen Fällen akzeptieren Sie null für optionale Felder, in denen das Leerzeichen nur ungültig ist. – tbraun
Dem würde ich zustimmen. Wenn Sie nicht null und nicht leer möchten, können Sie beide verwenden. Da dies nicht der Fall ist, könnten Sie Ihren eigenen Validator schreiben und diesen wie erwartet verwenden. –