Play Framework / Scala:在表单对象中编辑数据

时间:2015-02-12 19:21:00

标签: scala playframework

如何编辑表单数据映射中的元素? 假设您通过...

绑定接收的数据
val form = User.userEditForm.bindFromRequest

...然后你用折叠测试一切是否正常......

form.fold (formWithErrors => {
  BadRequest(views.html.userEditForm(formWithErrors))
},
new_user => {
  .....
}

。在第一个分支" formWithErrors"你重新显示表单并将formWithErrors作为参数传递。

假设我们有一个字段密码,我们想在重新显示表单进行修正之前清空此字段。 或者我们希望通过删除每个字段的开头/结尾处的所有空格来清理form.data中的所有字段。 这么简单的问题如何更新form.data hashmap中的任何字段?

1 个答案:

答案 0 :(得分:2)

Form是一个案例类,因此您可以使用copy方法将新数据复制到其中:

val form = Form {
    mapping(
        "email" -> email,
        "password" -> nonEmptyText,
        "something" -> number
    )
}

form.bindFromRequest.fold (
    formWithErrors => {
        BadRequest(views.html.userEditForm(
            formWithErrors.copy(data = formWithErrors.data + ("password" -> ""))
        ))
    },
    user => ...
)