我的自定义类通过以下方式实现:
@RequiredIfSet.List({
@RequiredIfSet(field = "isFillingOutForSomeoneElse", dependentField = "reporterName", message = "may not be null"),
})
当我遍历我的 ConstraintViolations 并通过 DTO 和 ajax 将其鞭打到前端时,我在一个小字符串 [] 中有 getMessage() 和 getPropertyPath()。
一切正常,但 propertyPath 不是由此设置的,因为它不在字段上,它是一个列表,我该如何设置它,或者获取字段名称以发回?一直让我发疯,尝试了一些解决方法,也请注意,这里是我循环的地方:
public static <T> EntityValidationDTO GetEntityValidationDTO(Set<ConstraintViolation<T>> cv){
List<String[]> invalidFields = new ArrayList<String[]>();
Iterator<ConstraintViolation<T>> iterator = cv.iterator();
while(iterator.hasNext()) {
ConstraintViolation<T> i = iterator.next();
String message = i.getMessage();
String property = i.getPropertyPath().toString();
invalidFields.add(new String[] { property, message });
}
EntityValidationDTO EVDTO = new EntityValidationDTO();
EVDTO.setStatus("fail");
EVDTO.setInvalidFields(invalidFields);
return EVDTO;
}