जेपीए 2.0/हाइबरनेट में फ़ील्ड्स के संयोजनों को मान्य करना
जेपीए 2.0/हाइबरनेट सत्यापन का उपयोग करते समय, ऐसे परिदृश्यों का सामना करना संभव है जहां का सत्यापन एकाधिक फ़ील्ड का संयोजन आवश्यक है. उदाहरण के लिए, फ़ील्ड getValue1() और getValue2():
public class MyModel {
public Integer getValue1() {
//...
}
public String getValue2() {
//...
}
}
यदि getValue1() और getValue2() दोनों शून्य हैं, तो मॉडल को अमान्य माना जाना चाहिए, जो अमान्य डेटा दर्शाता है।
वर्ग-स्तरीय बाधाएं: समाधान
ऐसे सत्यापनों को संभालने के लिए, जेपीए 2.0/हाइबरनेट वर्ग-स्तरीय बाधाएं प्रदान करता है। ये बाधाएँ व्यक्तिगत गुणों के बजाय संपूर्ण वर्ग उदाहरण पर लागू होती हैं। यह दृष्टिकोण परस्पर संबंधित क्षेत्रों को मान्य करने में लचीलापन प्रदान करता है। इस बाधा को किसी विशिष्ट संपत्ति के बजाय वर्ग पर लागू करने के लिए @Target को ElementType.TYPE पर सेट करें:
@Constraint(validatedBy = MultiCountryAddressValidator.class) @लक्ष्य(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) सार्वजनिक @इंटरफ़ेस पताअनोटेशन { स्ट्रिंग संदेश() डिफ़ॉल्ट "{error.address}"; कक्षा>[] समूह() डिफ़ॉल्ट { }; कक्षा पेलोड>[] पेलोड() डिफ़ॉल्ट { } का विस्तार करता है; }
Validator को कार्यान्वित करना
@Constraint(validatedBy = MultiCountryAddressValidator.class)
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface AddressAnnotation {
String message() default "{error.address}";
Class>[] groups() default { };
Class extends Payload>[] payload() default { };
}
पब्लिक क्लास मल्टीकंट्रीएड्रेसवैलिडेटर ConstraintValidator
public class MultiCountryAddressValidator implements ConstraintValidator {
...
// Implement the isValid() method to define the validation logic
}
अंत में, अपने MyModel क्लास को एड्रेसएनोटेशन के साथ एनोटेट करें:
@AddressAnnotation सार्वजनिक वर्ग MyModel { ... }
कक्षा-स्तरीय बाधाओं का उपयोग करके, आप हाइबरनेट सत्यापन का उपयोग करके मजबूत और लचीले तरीके से फ़ील्ड के संयोजन को प्रभावी ढंग से मान्य कर सकते हैं।अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3