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

exp*_*ert 1 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);
Run Code Online (Sandbox Code Playgroud)

Mic*_*Sim 6

您可以注释要验证的任何字段,@Valid在验证主对象时,它还将验证字段.

这适用于例如:

public class Order
    @Valid
    protected Header header;
    @Valid
    protected List<Detail> details;
}
Run Code Online (Sandbox Code Playgroud)

你需要打电话

Set<ConstraintViolation<Order>> violationsOrder = validator.validate(order, Default.class, ClientGroup.class);
Run Code Online (Sandbox Code Playgroud)

获取所有违规(也包括字段).然后getPropertyPath(),如果需要,您必须使用解析原因来获取确切的验证源.

javax.validation.Path rp = violation.getPropertyPath();
Run Code Online (Sandbox Code Playgroud)