2

私は 1 つのアプリの開発に play 1.2.5rc4 を使用しており、Play の興味深い動作を発見しました。次のコードを見てください。

User user = new User(some attributes...);
boolean userSaved = user.validateAndSave();

new User の呼び出し中に、validation.addError() メソッドを使用して検証エラーを追加します。次に、検証に既にエラーが含まれているため、validateAndSave() 中に false が返されることを期待します。しかし、そうではありません。これがバグなのか機能なのか疑問に思っています。つまり、この動作が役立つユースケースを誰か思いつくことができますか?

もう 1 つの質問は、validateAndSave() がデフォルトの save() メソッドではないのはなぜですか? user.save() を呼び出しても、制約に違反するユーザーは保存されないことが予想されますが、明らかに保存されます(@Unique制約に違反するユーザーがdbに挿入される例があります)。これが役立つ理由は何ですか?メソッド save() を validateAndSave() として動作させてから、saveWithoutValidation() などのメソッドを使用する方がよいのではないでしょうか? メソッドの現在の命名が多くの問題を引き起こしていることがわかります。

4

1 に答える 1

2

検証して保存すると、既存の検証オブジェクトは調べられませんが、代わりに、検証を求めている特定のオブジェクトが検証されます。

2 番目の質問は、画面デザインの 1 つに固有の検証があるかもしれないが、管理画面では異なるビジネス ルールが必要な場合があるためです。オブジェクトが常に正しいことを強制することは、フレームワークによって強制されるべきではない開発者への制限です。

于 2012-07-04T17:33:15.363 に答える