【发布时间】:2015-01-30 18:29:07
【问题描述】:
我需要构建更新方法,但是当我测试时显示错误 NoSuchElementException: None.get
用户控制器
object UserController extends Controller {
def update(id:Long) = DBAction { implicit rs =>
var user = simpleUserForm.bindFromRequest.get
user.id = Users.toOption(id)
Users.update(user)
Redirect(routes.UserController.list)
}
val simpleUserForm :Form[User] = Form {
mapping(
"firstName" -> nonEmptyText,
"lastName" -> nonEmptyText,
"email" -> email,
"birthDate" -> nonEmptyText,
"phone" -> nonEmptyText,
"username" -> text,
"password" -> nonEmptyText
)(UserForm.fromSimpleForm)(UserForm.toSimpleForm)
}
}
edit.scala.html
@import models.auth.Users
@(title: String, user:models.auth.User)
@main(title){
<form method="post" action="@controllers.auth.routes.UserController.update(Users.toLong(user.id))">
<input type="text" placeholder="First Name" name="firstName" value="@user.firstName"/><br/>
<input type="text" placeholder="Last Name" name="lastName" value="@user.lastName"/><br/>
<input type="email" placeholder="Email" name="email" value="@user.email" /><br/>
<input type="text" placeholder="Phone" name="phone" value="@user.phone" /><br/>
<input type="text" placeholder="Birthdate(dd/MM/yyyy)" name="birthDate" value="@user.birthDate" /><br/>
<input type="text" placeholder="Username" name="username" value="@user.username" /><br/>
<input type="submit" value="Update User" />
</form>
}
路线
POST /user/:id/ controllers.auth.UserController.update(id:Long)
我已经完成了创建、读取和删除操作,但是对于更新我发现行中有错误
var user = simpleUserForm.bindFromRequest.get
错误是 NoSuchElementException: None.get
【问题讨论】:
-
在
Form上使用.get是不安全的。它抛出异常是因为存在验证错误,因此无法绑定到对象。 -
我应该用什么?
-
你应该使用 fold 而不是 .get
formMapping.feeForm.bindFromRequest.fold( formWithErrors => { ??? }, dataOnSuccess => ??? ) }
标签: scala playframework crud slick