我想将某些字段视为可选,如果值为null或为空,则不检查其他带注释的约束。 有一些方法可以实现它! 阅读这篇文章Java bean validation: Enforce a @Pattern only when the property is not blank似乎并不能满足我的需求。 下面是一个例子来解释我的意思:
public class Test {
@Max(value=100) <--mandatory
private int parA;
@Optional <-Custom annotation telling "do not check other if null or blank"
@Range(min=10, max=200)
private int parB;
...
}
答案 0 :(得分:3)
您无法通过Bean验证执行所需操作。您无法在属性上的两个约束之间建立“连接”。此外,如果我理解正确,您的@Optional
甚至不是约束注释,而只是标记注释。但请注意,所有默认约束都以约束验证空值的方式实现。因此,在大多数情况下,无论哪种方式,您都可以获在您的示例中,您还遇到了处理原始int的问题。这将始终具有值,因此范围约束将以任一方式进行评估。
答案 1 :(得分:1)
现在可以了!
public Optional<@Size(min=1, max=128) String> first_name = Optional.empty();