Bu üç ek açıklama arasındaki farkı ayırt eden bir özet bulamıyorum.
Bu üç ek açıklama arasındaki farkı ayırt eden bir özet bulamıyorum.
Yanıtlar:
@NotNull
: CharSequence, Collection, Map veya Array nesnesi boş değildir , ancak boş olabilir .
@NotEmpty
: CharSequence, Collection, Map veya Array nesnesi boş değil ve boyut> 0 .
@NotBlank
: Dize boş değil ve kırpılan uzunluk sıfırdan büyük .
Anlamanıza yardımcı olmak için, bu kısıtlamaların nasıl tanımlandığına ve uygulandığına bakalım (4.1 sürümünü kullanıyorum):
@NotNull
Kısıtlama şu şekilde tanımlanır:
@Constraint(validatedBy = {NotNullValidator.class})
Bu sınıfın şu şekilde isValid
tanımlanan bir yöntemi vardır :
public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {
return object != null;
}
@NotEmpty
Kısıtlama şu şekilde tanımlanır:
@NotNull
@Size(min = 1)
Yani bu kısıtlama kullanır@NotNull
yukarıdaki kısıtlamayı, ve @Size
kimin tanım farklılık nesneye dayalı ama kendini explanitory olmalıdır.
Son olarak, @NotBlank
kısıtlama şu şekilde tanımlanır:
@NotNull
@Constraint(validatedBy = {NotBlankValidator.class})
Dolayısıyla bu kısıtlama aynı zamanda kısıtlamayı kullanır @NotNull
, ancak NotBlankValidator sınıfıyla da kısıtlar. Bu sınıfın şu şekilde isValid
tanımlanan bir yöntemi vardır :
if ( charSequence == null ) { //curious
return true;
}
return charSequence.toString().trim().length() > 0;
İlginç bir şekilde, bu yöntem dizge null ise true döndürür, ancak ancak ve ancak kesilen dizenin uzunluğu 0 ise false döndürür. Boşsa doğru döndürmesi sorun değil çünkü bahsettiğim gibi @NotEmpty
tanım da gerektirir @NotNull
.
İşte birkaç örnek:
Dize adı = boş;
@NotNull
: yanlış
@NotEmpty
: yanlış
@NotBlank
: yanlış
Dize adı = "";
@NotNull
: true
@NotEmpty
: false
@NotBlank
: yanlış
Dize adı = "";
@NotNull
: true
@NotEmpty
: true
@NotBlank
: yanlış
String name = "Harika yanıt!";
@NotNull
: true
@NotEmpty
: true
@NotBlank
: true
Aşağıdaki bağlantıdaki açıklamayı beğendim: http://www.itprogrammingtutorials.com/2015/java/hibernate/hibernate-validator-diff-notblank-notempty/
@NotNull: İçeriği göz ardı ederek değerin boş olup olmadığını kontrol eder
@NotEmpty: Değerin null veya boş olup olmadığını kontrol eder. Sadece boş alanları varsa, boş olmamasına izin verecektir.
@NotBlank: Değerin null veya boş olup olmadığını kontrol eder, önce değeri keser. Bu, sadece boş alanlara izin vermeyeceği anlamına gelir.
Öyleyse, bir alanın boş olmadığını, aynı zamanda sadece boş boşluklar olmadığını, ancak metin içerdiğini doğrulamak istiyorsanız, @NotBlank kullanmalısınız.
@NotNull:
kısıtlanmış bir CharSequence, Collection, Map veya Array, boş olmadığı sürece geçerlidir, ancak boş olabilir@NotEmpty:
kısıtlanmış bir CharSequence, Collection, Map veya Array, boş olmadığı ve boyutu / uzunluğu sıfırdan büyük olduğu sürece geçerlidir.@NotBlank:
kısıtlanmış bir Dize, boş olmadığı ve kesilen uzunluk sıfırdan büyük olduğu sürece geçerlidir.