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

Play Framework/Scala: Editing data in a form object

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

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

...然后使用 fold 测试是否一切正常....

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

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

假设我们有一个字段密码,并且我们希望在重新显示表单进行更正之前清空该字段。 或者我们想通过删除每个字段 beginning/end 处的所有空格来清理 form.data 中的所有字段。 如此简单的问题如何更新 form.data 哈希图中的任何字段?

Form是个caseclass,所以可以用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 => ...
)