JSR 303: كيفية التحقق من صحة مجموعة من الأشياء المشروحة؟
-
29-09-2019 - |
سؤال
هل من الممكن التحقق من صحة مجموعة من الكائنات في JSR 303 - Jave Bean Validation حيث لا تحتوي المجموعة نفسها على أي تعليقات توضيحية ولكن العناصر الموجودة داخلها؟
على سبيل المثال ، هل من الممكن أن يؤدي ذلك إلى انتهاك للقيود بسبب اسم فارغ على الشخص الثاني:
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);
نصائح أخرى
يمكنك أيضا إضافة @NotEmpty
إلى المجموعة.
public class Car {
@NotEmpty(message="At least one passenger is required")
@Valid
private List<Person> passengers = new ArrayList<Person>();
}
هذا سيضمن وجود راكب واحد على الأقل ، و @Valid
يضمن التعليق التوضيحي كل منهما Person
تم التحقق من صحة الكائن
يمكنك بالطبع أيضًا التكرار على القائمة ومكالمات المكالمات. أو ضع القائمة في بعض الفاصوليا الغلاف وتوضيحها مع Valid. يبدو أن تمديد قائمة ArrayList للتحقق من الصحة. هل لديك حالة استخدام خاصة تريد حلها مع هذا؟ إذا كان الأمر كذلك ، فربما يمكنك شرح ذلك أكثر من ذلك بقليل. للإجابة على سؤالك الأولي:
هل من الممكن التحقق من صحة مجموعة من الكائنات في JSR 303 - Jave Bean Validation حيث لا تحتوي المجموعة نفسها على أي تعليقات توضيحية ولكن العناصر الموجودة داخلها؟
رقم
كتبت هذه الفئة العامة:
public class ValidListWrapper<T> {
@Valid
private List<T> list;
public ValidListWrapper(List<T> list) {
this.list = list;
}
public List<T> getList() {
return list;
}
}
إذا كنت تستخدم مكتبة Jackson لإلغاء التخلص من JSON ، يمكنك إضافة @JsonCreator
التعليقات التوضيحية على المُنشئ وجاكسون سيقوم تلقائيًا بإلغاء صفيف JSON إلى كائن Wrapper.