2

Play でモデルを作成するとき! @Constraints.Required2.x では、とを使用できます@Formats.NonEmpty。私が理解しているように、それらは同じですが、ZenTasks サンプルでは両方を同じフィールドで使用しているため、おそらく間違っています。しかし、なぜ?

public class User extends Model {

    @Id
    @Constraints.Required
    @Formats.NonEmpty
    public String email;

    ...
}
4

3 に答える 3

6

Constraints と Formats は完全に異なるターゲットを持っています。1 つはフォーマット用で、もう 1 つは検証用です。

  • @Constraints.Required値が null でないことを確認する検証です。
  • @Formats.NonEmpty入力をトリミングするフォーマッタで、文字列の長さが 0 ( text.trim().isEmpty()) の場合は null を返します。したがって、値は null に設定されます。その後、Required-annotation がその仕事を行うことができます。

そのため、両方を使用すると便利なことがよくありますが、すべての状況で使用できるわけではありません。

于 2012-06-06T15:05:59.697 に答える
3
  • @Constraints.Requiredプロパティがまったく送信されたかどうかを確認するため、空のspace文字を送信するだけで有効になります
  • @Formats.NonEmptyトリミングされた値が空でないかどうかをさらにチェックします
于 2012-06-05T20:09:33.220 に答える
1

@Formats.NonEmpty変換結果は、最初@Constraints.Requiredに変換されたものをチェックします。

例: 文字列は" "pass@Constraints.Requiredであるため、追加@Formats.NonEmptyすると最初にトリム" "されnull@Contraints.Requiredエラーが発生する可能性があります。

于 2013-01-21T03:46:03.483 に答える