Java bean验证:可选字段注释

时间:2015-02-16 16:32:24

标签: bean-validation hibernate-validator

我想将某些字段视为可选,如果值为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;
...

}

2 个答案:

答案 0 :(得分:3)

您无法通过Bean验证执行所需操作。您无法在属性上的两个约束之间建立“连接”。此外,如果我理解正确,您的@Optional甚至不是约束注释,而只是标记注释。但请注意,所有默认约束都以约束验证空值的方式实现。因此,在大多数情况下,无论哪种方式,您都可以获在您的示例中,您还遇到了处理原始int的问题。这将始终具有值,因此范围约束将以任一方式进行评估。

答案 1 :(得分:1)

现在可以了!

https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#example-container-element-constraints-optional

public Optional<@Size(min=1, max=128) String> first_name = Optional.empty();
相关问题