java - समस - JSR 303: एनोटेट वस्तुओं के संग्रह का सत्यापन कैसे करें?




समस्त पेंशन हितग्राहियों का पोर्टल पर सत्यापन बचत खाते की जानकारी सहित (3)

क्या जेएसआर 303 - जेव बीन मान्यता में वस्तुओं के संग्रह को मान्य करना संभव है, जहां संग्रह में केवल कोई एनोटेशन नहीं है, लेकिन क्या तत्व हैं?

उदाहरण के लिए, क्या यह संभव है कि दूसरे व्यक्ति पर एक अशक्त नाम के कारण बाधा का उल्लंघन हो सकता है:

List<Person> people = new ArrayList<Person>();
people.add(new Person("dave"));
people.add(new Person(null));

Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<List<Person>>> validation = validator.validate(people);

आप निश्चित रूप से सूची पर केवल पुनरावृति कर सकते हैं और प्रत्येक तत्व पर Validator.validate को कॉल कर सकते हैं। या लिस्ट को कुछ रैपर बीन में डालकर @Valid के साथ एनोटेट करें। मान्यता के लिए ArrayList का विस्तार करना मुझे गलत लगता है। क्या आपके पास एक विशेष उपयोग का मामला है जिसे आप इसके साथ हल करना चाहते हैं? यदि ऐसा है तो शायद आप इसे थोड़ा और समझा सकते हैं। अपने प्रारंभिक प्रश्न का उत्तर देने के लिए:

क्या जेएसआर 303 - जेव बीन मान्यता में वस्तुओं के संग्रह को मान्य करना संभव है, जहां संग्रह में केवल कोई एनोटेशन नहीं है, लेकिन क्या तत्व हैं?

नहीं


आप, संग्रह में @NotEmpty भी जोड़ सकते हैं।

public class Car {
  @NotEmpty(message="At least one passenger is required")
  @Valid
  private List<Person> passengers = new ArrayList<Person>();
}

यह सुनिश्चित करेगा कि कम से कम एक यात्री मौजूद हो, और @Valid टिप्पणी यह ​​सुनिश्चित करती है कि प्रत्येक Person वस्तु मान्य है


हां, संग्रह में केवल @Valid जोड़ें।

यहां हाइबरनेट वैलिडेटर संदर्भ से एक उदाहरण दिया गया है।

public class Car {
  @NotNull
  @Valid
  private List<Person> passengers = new ArrayList<Person>();
}

यह मानक JSR-303 व्यवहार है। spec का अनुभाग 3.1.3 देखें।





jsr