【问题标题】:Get object from form with errors in play framework 2.0在播放框架 2.0 中从有错误的表单中获取对象
【发布时间】:2017-06-11 20:47:41
【问题描述】:

当我尝试从存在验证错误的表单中提取用户时遇到错误。

我在routes 文件中配置了以下路由:

GET     /users/:user            controllers.UsersController.viewUser(user: models.User)
GET     /users/:user/edit       controllers.UsersController.editUser(user: models.User)

此时这很好,我可以从我的 scala 模板中呈现指向用户视图的链接:

routes.UsersController.viewUser(myUserObject)

我的问题是,在我的用户版表单中,我需要从 Form[User] 对象中获取 myUserObject。我目前正在做的是:

routes.UsersController.viewUser(userForm.get)

但是,当userForm出现错误时,get方法会引发异常,如the documentation所示。

我采取的方法是将一个额外的User 参数与我迄今为止传递的Form[User] 参数一起传递给scala 视图,我的意思是,

userEdit.render(user, userForm)

而不仅仅是

userEdit.render(userForm)

但是,我想知道是否有更合适的解决方案,不涉及包含附加参数。

【问题讨论】:

    标签: scala playframework playframework-2.0


    【解决方案1】:

    documentation 声明您可以使用现有数据预先填写表单:

    val filledForm = userForm.fill(User("Bob", 18))
    

    鉴于预先存在的User,适应您的示例应该很简单。

    【讨论】:

    • 验证错误后,表单应该填写用户输入的信息,而不是数据库中已经保存的信息。该指令会覆盖用户输入的信息吗?
    • 我认为是这样,但是当表单包含错误时,您可以使用用户数据填写表单。而不是做一个userForm.get,你应该看看userForm.fold。这种情况下需要明确处理用户输入错误数据的情况
    猜你喜欢
    • 2012-04-16
    • 1970-01-01
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多