playframework - 玩!和模型验证

标签 playframework

我一直在使用 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/

相关文章:

scala - 有没有一种很好的 Play2 方法可以用 Guice 在 Play 插件中注入(inject)实例

java - 如何处理 Play Framework 2 (Java) 中表单中的全局错误

java - 将参数从 Controller 传递到 Action

scala - 使用 Guice 绑定(bind)/注入(inject) Scala 函数(不是整个类)?

java - 在play Framework 2.0中将变量分配给java列表

Java,Play2.0 ,')' 预期但 '=' 找到 Play

java - 覆盖 Play 1.2.4 中现有的 CRUD 模块

java - 如何将场注入(inject)与 Action 组合一起使用?

使用 JPA 循环遍历大型表时出现 java.lang.OutOfMemoryError

scala - 在play scala中传递请求参数