换句话说,如果我有@Email
和@NotNull
两个约束,@Email
验证器不会抛出NPE?
这似乎很明显,但我问,因为我看到一些自定义验证器检查要验证的值是否为null,如果是,则返回true。这似乎是一个坏主意,因为如果开发人员忘记将@NotNull
添加到email
字段,那么电子邮件字段仍会通过验证。
TIA, 奥莱
答案 0 :(得分:2)
返回true
null
被认为是Bean中的最佳做法
验证和所有内置约束都遵循它(如果可能)。
Bean验证规范在3.4. Constraint validation implementation部分中说明:
虽然不是强制性的,但分割它是一种很好的做法 非空约束验证的核心约束验证 (例如,@ Email约束将在null对象上返回true, 即不会处理@NotNull验证。)
null可以有多种含义,但通常用于表示a 价值没有意义,不可用或根本不为人知。 在大多数情况下,对值的这些约束与其他约束是正交的 限制。例如,String(如果存在)必须是电子邮件但是 可以为null。将这两个问题分开是一种很好的做法。