JSR 303:是否可以自动验证整个图形?

时间:2012-03-13 06:30:52

标签: java bean-validation

是否可以自动验证整个图表?完整图表我指的是正在验证的对象及其所有字段也是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);

1 个答案:

答案 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();