Hibernate验证器@NotNull是否始终首先触发?

时间:2016-06-30 18:04:00

标签: java hibernate validation hibernate-validator

换句话说,如果我有@Email@NotNull两个约束,@Email验证器不会抛出NPE?

这似乎很明显,但我问,因为我看到一些自定义验证器检查要验证的值是否为null,如果是,则返回true。这似乎是一个坏主意,因为如果开发人员忘记将@NotNull添加到email字段,那么电子邮件字段仍会通过验证。

TIA, 奥莱

1 个答案:

答案 0 :(得分:2)

返回true null被认为是Bean中的最佳做法 验证和所有内置约束都遵循它(如果可能)。 Bean验证规范在3.4. Constraint validation implementation部分中说明:

  

虽然不是强制性的,但分割它是一种很好的做法   非空约束验证的核心约束验证   (例如,@ Email约束将在null对象上返回true,   即不会处理@NotNull验证。)

     

null可以有多种含义,但通常用于表示a   价值没有意义,不可用或根本不为人知。   在大多数情况下,对值的这些约束与其他约束是正交的   限制。例如,String(如果存在)必须是电子邮件但是   可以为null。将这两个问题分开是一种很好的做法。