【发布时间】:2013-04-01 00:26:57
【问题描述】:
我有这些案例类
case class Blog(id:Long, author:User, other stuff...)
case class Comment(id:Long, blog:Blog, comment:String)
以及提交数据的客户端表单
blog_id:"5"
comment:"wasssup"
我正在编写一些简单的代码来让用户向博客添加评论。
用户已登录,因此客户端不需要他的user_id,我们知道他是谁......
我想将blog_id 绑定到从数据库加载的Blog 对象,如果它不存在则显示错误。
播放框架文档中的示例没有帮助。
它们仅显示代表单个对象及其所有字段的表单的映射。
在这里,我代表(b:Blog, comment:String) 的元组,而对于Blog,我只提供id。
我想要一个映射,它可以为我提供转换 + 验证 + 错误消息,所以我可以写如下内容:
val form = Form(
tuple(
"blog_id" -> blogMapping,
"comment" -> nonEmptyText
)
)
form.bindFromRequest().fold(...
formWithErrors => {...
}, {
case (blog, comment) => {do some db stuff to create the comment}
...
“blogMapping”将像其他映射一样工作,它将发布的数据绑定到一个对象,在我们的例子中是从 db 加载的博客,如果它不成功,它将提供一个我们可以在 @ 上使用的错误987654330@子句。
我不知道如何做到这一点,这里的文档有点缺乏......
任何帮助表示赞赏!
【问题讨论】:
-
我接受了 James 的答案,但使用了一些不同的东西,我会添加我的答案,以便其他人可以查看它。
标签: forms scala binding playframework