Hibernate自定义约束验证器,如何显式设置propertyPath?

时间:2012-06-06 04:05:22

标签: java hibernate nhibernate-validator

我的自定义类通过以下方式实现:

@RequiredIfSet.List({
    @RequiredIfSet(field = "isFillingOutForSomeoneElse", dependentField = "reporterName", message = "may not be null"),
})

当我遍历我的ConstraintViolations并通过DTO和ajax将它鞭打到前端时,我在一个String []中有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;
    }

0 个答案:

没有答案