我一直在使用 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() ,然后再使用一个方法,例如 validateAndSave() ,不是更好吗?保存没有验证()?我可以看到当前方法的命名导致了很多问题。
最佳答案
验证并保存不会查看现有验证对象,而是验证您要求验证的特定对象。
你的第二个问题是因为你可能有一些验证,这是特定于你的屏幕设计之一,但也许在管理屏幕上,你想要有不同的业务规则。强制对象始终正确是对开发人员的限制,框架不应强制这样做。
关于playframework - 玩!和模型验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11333239/