2

我一直在使用 play 1.2.5rc4 开发一个应用程序,我发现了 Play 的一个有趣行为。看下面的代码:

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

在调用新用户期间,我使用 validation.addError() 方法添加了一个验证错误。然后我希望在 validateAndSave() 期间它返回 false,因为验证已经包含一个错误。但事实并非如此。我想知道这是错误还是功能。我的意思是,当这种行为有用时,谁能想到一些用例?

另一个问题是,为什么 validateAndSave() 不是默认的 save() 方法?我希望如果我调用 user.save() 它不会保存违反约束的用户,但显然它确实如此(我有一个示例,违反 @Unique 约束的用户被插入到数据库中)。知道为什么这很有用吗?让方法 save() 表现为 validateAndSave() 和方法,例如 saveWithoutValidation() 不是更好吗?我可以看到导致很多问题的方法的当前命名。

4

1 回答 1

2

Validate and save 不查看现有的验证对象,而是验证您要求验证的特定对象。

您的第二个问题是因为您可能有一些验证,这是特定于您的一种屏幕设计的,但也许在管理屏幕上,您希望有不同的业务规则。强制对象始终正确是对开发人员的限制,不应由框架强制。

于 2012-07-04T17:33:15.363 回答