是否可以验证一个集中的对象JSR303-灵真的太好了Bean验证那里收集本身不具有任何注解,但是要素包含在做什么?

例如,是否有可能为此结果约束冲突,由于空的名字在第二人:

List<Person> people = new ArrayList<Person>();
people.add(new Person("dave"));
people.add(new Person(null));

Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<List<Person>>> validation = validator.validate(people);
有帮助吗?

解决方案

是的,只要添加 @Valid 到收藏。

这是 一个例子 从冬眠验证器参考。

public class Car {
  @NotNull
  @Valid
  private List<Person> passengers = new ArrayList<Person>();
}

这是标准的JSR-303行为。请参阅第3.1.3节 规格.

其他提示

你,也可以添加 @NotEmpty 到收藏。

public class Car {
  @NotEmpty(message="At least one passenger is required")
  @Valid
  private List<Person> passengers = new ArrayList<Person>();
}

这将确保至少有一名乘客,并且 @Valid 注释确保每个 Person 对象已验证

当然,你也可以只是迭代表和呼叫验证程序。验证上的每一个元素。或者把这列入一些包装豆和注释它与@有效的。延伸。验证似乎是错误的给我。你有一个特定使用的情况下,要解决这个?如果是这样也许你可以解释这一点。来回答你最初的问题:

是否有可能验证 集合的目的在JSR303- 灵真的太好了Bean验证那里的 收集本身不具有任何 注释,但包含的元素 在做什么?

没有

我写了这个通用类:

public class ValidListWrapper<T> {

    @Valid
    private List<T> list;

    public ValidListWrapper(List<T> list) {
        this.list = list;
    }

    public List<T> getList() {
        return list;
    }

}

如果您使用Jackson Library进行审判JSON,则可以添加 @JsonCreator 构造函数上的注释和杰克逊将自动对JSON数组进行启用到包装对象。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top