2016-06-30 8 views
1

つまり、@Email@NotNullのような2つの制約がある場合、@EmailバリデータはNPEを投げませんか?Hibernate Validatorは@NotNullが常に最初にトリガされますか?

明らかなようですが、いくつかのカスタムバリデーターが検証される値がヌルであるかどうかをチェックしている場合はtrueを返します。これは悪い考えです。なぜなら、開発者が@NotNullフィールドにemailフィールドを追加するのを忘れた場合、電子メールフィールドは引き続き検証に合格するからです。

TIA、豆 検証におけるベストプラクティスと考え、すべての組み込みの制約されnullためtrueを返す オレ

答えて

2

は(可能な場合)、それに準拠しています。 豆の検証仕様はセクション3.4. Constraint validation implementationで述べている:必須ではありません、(例えば、@email制約が返されますNOT NULL制約の検証 から コア制約の検証を分割する良い方法と考えられている一方で

ヌルオブジェクトの場合はtrue、つまり は@NotNull検証を処理しません)。

nullは複数の意味を持つことができますが、 の値が意味をなさない、利用できない、または単に不明であることを表すためによく使用されます。 これらの値に対する制約は、ほとんどの場合、他の制約と直交しています。たとえば、文字列がある場合は、電子メールである必要がありますが、 はnullでもかまいません。両方の懸念を分けることは良い習慣です。