4

我正在验证一个大 bean。它基于动态表单页面。正在验证的某些字段在表单上不可见,因此为空或为空。但我不希望验证不可见的字段。有时它们是可见的,我希望它们被验证,有时它们不可见,我不希望它们被验证。我首先采取了在提交之前从序列化表单中剥离这些字段的方法。但它仍然会验证缺失的字段,因为它们存在于带有验证标签的 bean 中。做我想做的事情的正确方法是什么?

4

1 回答 1

3

一种可能的方法是使用验证组。您为不同的组定义不同的验证规则。之后,您可以仅为其中一个组或一组组调用验证器。

public class TestBean {

    @NotNull(groups= {Group1.class})
    @Size.List({
        @Size(min=1, groups= {Group1.class}),
        @Size(min=0, groups= {Group2.class})
    })
    private String test;
}

public interface Group1 { }
public interface Group2 { }

然后您可以为这些组中的一个或多个调用验证器

Validator validator = ....;
Set<ConstraintViolation<Object>> constraintViolations = validator.validate(objectToValidate, Group1.class);

有关验证组的更多信息,请参见此处

于 2013-01-23T17:27:55.253 回答