是否可以自动验证整个图表?完整图表我指的是正在验证的对象及其所有字段也是bean。
或者我必须手动遍历它们,如下所示?
目前我做的事情
Set<ConstraintViolation<OrderProxy>> violationsOrder =
validator.validate(order, Default.class, ClientGroup.class);
Set<ConstraintViolation<OrganizationProxy>> violationsOrg =
validator.validate(order.getSender(), Default.class, ClientGroup.class);
Set<ConstraintViolation<PersonProxy>> violationsPerson =
validator.validate(order.getSender().getPerson(),
Default.class, ClientGroup.class);
答案 0 :(得分:6)
您可以注释要使用@Valid
验证的任何字段,并且在验证主对象时,它还会验证字段。
这适用于例如:
public class Order
@Valid
protected Header header;
@Valid
protected List<Detail> details;
}
您需要致电
Set<ConstraintViolation<Order>> violationsOrder = validator.validate(order, Default.class, ClientGroup.class);
获取所有违规(也包括字段)。然后,如果需要,您必须使用getPropertyPath()
解析原因以获取确切的验证源。
javax.validation.Path rp = violation.getPropertyPath();