gpt4 book ai didi

java - 使用集合时违反约束属性路径

转载 作者:行者123 更新时间:2023-12-02 04:35:55 25 4
gpt4 key购买 nike

我无法解决我在 JSR303 bean 验证方面遇到的问题(我目前正在使用 Hibernate Validator)。

假设我有以下域模型

class Foo {
private Set<Bar> bars = new HashSet<>();

@Valid
public Set<Bar> getBars() { ... }
}

class Bar {
private String name;

@NotBlank
public String getName() { ... }
}

假设我有一个 foo 实例,其中有两个 bar,其中两个名称之一为空。验证 foo 后,我手中的属性路径 bars[].name 违反了 @NotBlank 约束。这一切都很好,但是......

有什么办法可以找出两个酒吧中哪一个的名称为空吗?或者我被迫在这里使用 List 并使用反射内省(introspection) - 然后是唯一的 - 属性路径?

最佳答案

最新版本的 Hibernate Validator,5.2.0.CR1 ,提供了solution为了这。您可以解开属性路径节点并获取属性值。这样您就知道哪个 Bar 实例受到影响:

Set<ConstraintViolation<Foo>> constraintViolations = ...;

Path path = constraintViolations.iterator().next().getPropertyPath();
Iterator<Path.Node> nodeIterator = path.iterator();

Path.Node node = nodeIterator.next();
Bar bar = (Bar) node.as( PropertyNode.class ).getValue();

关于java - 使用集合时违反约束属性路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30756115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com