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
。在这种情况下,您需要明确处理用户输入错误数据的情况