मैं ऐसा सारांश नहीं खोज पा रहा हूँ जो इन तीन टिप्पणियों के बीच अंतर को अलग करता हो।
मैं ऐसा सारांश नहीं खोज पा रहा हूँ जो इन तीन टिप्पणियों के बीच अंतर को अलग करता हो।
जवाबों:
@NotNull
: The CharSequence, Collection, Map या Array ऑब्जेक्ट शून्य नहीं है , लेकिन खाली हो सकता है।
@NotEmpty
: द चार्जसेंस, कलेक्शन, मैप या एरे ऑब्जेक्ट शून्य और आकार नहीं है> 0 ।
@NotBlank
: स्ट्रिंग शून्य नहीं है और छंटनी की लंबाई शून्य से अधिक है ।
आपको समझने में मदद करने के लिए, आइए देखें कि इन बाधाओं को कैसे परिभाषित किया जाता है और किया जाता है (मैं संस्करण 4.1 का उपयोग कर रहा हूं):
@NotNull
बाधा के रूप में परिभाषित किया गया है:
@Constraint(validatedBy = {NotNullValidator.class})
इस वर्ग की एक isValid
विधि इस प्रकार है :
public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {
return object != null;
}
@NotEmpty
बाधा के रूप में परिभाषित किया गया है:
@NotNull
@Size(min = 1)
तो इस बाधा का उपयोग करता है@NotNull
ऊपर बाधा, और @Size
जिसकी परिभाषा अलग है वस्तु पर आधारित है लेकिन आत्म explanitory होना चाहिए।
अंततः @NotBlank
बाधा के रूप में परिभाषित किया गया है:
@NotNull
@Constraint(validatedBy = {NotBlankValidator.class})
तो यह बाधा भी अवरोध का उपयोग @NotNull
करती है, लेकिन NotBlankValidator वर्ग के साथ बाधाओं का भी। यह वर्ग ए हैisValid
विधि :
if ( charSequence == null ) { //curious
return true;
}
return charSequence.toString().trim().length() > 0;
दिलचस्प बात यह है कि यह पद्धति सही है यदि स्ट्रिंग अशक्त है, लेकिन झूठी है और केवल अगर छंटनी की गई स्ट्रिंग की लंबाई 0. है तो यह ठीक है कि यह सही है अगर यह शून्य है, क्योंकि जैसा कि मैंने उल्लेख किया है, @NotEmpty
परिभाषा भी आवश्यक है @NotNull
।
कुछ उदाहरण निम्नलिखित हैं:
स्ट्रिंग नाम = अशक्त;
@NotNull
: झूठी
@NotEmpty
: झूठी
@NotBlank
: झूठी
स्ट्रिंग नाम = "";
@NotNull
: सत्य
@NotEmpty
: असत्य
@NotBlank
: असत्य
स्ट्रिंग नाम = "";
@NotNull
: सच
@NotEmpty
: सच
@NotBlank
: गलत
स्ट्रिंग नाम = "महान जवाब!";
@NotNull
: सच
@NotEmpty
: सच
@NotBlank
: सच
ConstraintValidator
इन एनोटेशनों के साथ अब कोई संबंध है ।
मुझे नीचे दिए गए लिंक में स्पष्टीकरण पसंद आया: http://www.itprogrammingtutorials.com/2015/java/hibernate/hibernate-validator-diff-notblank-notempty/
@NotNull: जाँचता है कि क्या मूल्य शून्य नहीं है, सामग्री की अवहेलना कर रहा है
@NotEmpty: जाँचता है कि मान शून्य है या खाली नहीं है। यदि इसके पास खाली स्थान हैं, तो यह खाली नहीं होने देगा।
@NotBlank: जाँचता है कि मान शून्य है या खाली नहीं है, पहले मान को ट्रिम कर रहा है। इसका मतलब है कि, यह सिर्फ खाली स्थानों की अनुमति नहीं देगा।
इसलिए, यदि आप यह सत्यापित करना चाहते हैं कि कोई फ़ील्ड शून्य नहीं है, बल्कि यह भी है कि इसमें केवल रिक्त स्थान नहीं है, लेकिन पाठ है, तो आपको @NotBlank का उपयोग करना चाहिए।
@NotNull:
जब तक यह अशक्त नहीं है तब तक एक विवशता, संग्रह, नक्शा, या ऐरे मान्य है, लेकिन यह खाली हो सकता है@NotEmpty:
जब तक यह अशक्त नहीं है, तब तक एक विवशता, संग्रह, मानचित्र, या ऐरे मान्य है और इसका आकार / लंबाई शून्य से अधिक है।@NotBlank:
एक संकुचित स्ट्रिंग तब तक मान्य है जब तक यह शून्य न हो और छंटनी की लंबाई शून्य से अधिक हो।