Scala 在play framework 2.0中从窗体获取对象时出错
当我试图从有验证错误的表单中提取用户时,我遇到了一个错误 我在我的Scala 在play framework 2.0中从窗体获取对象时出错,scala,playframework,playframework-2.0,Scala,Playframework,Playframework 2.0,当我试图从有验证错误的表单中提取用户时,我遇到了一个错误 我在我的路由文件中配置了以下路由: GET /users/:user controllers.UsersController.viewUser(user: models.User) GET /users/:user/edit controllers.UsersController.editUser(user: models.User) 这一点很好,我可以从scala模板呈现到用户视图的链
路由
文件中配置了以下路由:
GET /users/:user controllers.UsersController.viewUser(user: models.User)
GET /users/:user/edit controllers.UsersController.editUser(user: models.User)
这一点很好,我可以从scala模板呈现到用户视图的链接:
routes.UsersController.viewUser(myUserObject)
我的问题是,在我的用户版表单中,我需要从表单[user]
对象中获取myUserObject
。我目前正在做的是:
routes.UsersController.viewUser(userForm.get)
但是,当userForm
有任何错误时,get
方法会引发异常,如中所示
我所采取的方法是向scala视图传递一个额外的User
参数,以及我到目前为止传递的Form[User]
参数
userEdit.render(user, userForm)
而不仅仅是
userEdit.render(userForm)
但是,我想知道是否有一种更合适的解决方案不包括附加参数。可以使用现有数据预先填充表单的状态:
val filledForm = userForm.fill(User("Bob", 18))
考虑到先前存在的
用户
,适应您的示例应该很简单。验证错误后,表单应填写用户输入的信息,而不是数据库中已保存的信息。这个指令会覆盖用户输入的信息吗?我想是的,但是当表单包含错误时,您可以用用户数据填充表单。与其执行userForm.get
,不如查看userForm.fold
。在这种情况下,您需要明确处理用户输入错误数据的情况