我正在编写一个小的业余应用程序。在我的应用程序中,我想让人们拥有一个用户ID(就像我的在stackoverflow上是niklassaers一样),如果该ID已被使用,则希望用户收到错误提示,以便其选择另一个ID。
以下是我的注册对象,它在“mapping(”一行给我一个错误:“缺少方法映射的参数;如果要将其视为部分应用函数,请在此方法后跟 `_' ”
object Signup extends Controller {
val userForm: Form[UserProfile] = Form(
mapping(
"userId" -> nonEmptyText,
"passwordHash" -> nonEmptyText,
"email" -> email
) verifying (
"ThisIsATest", { case(userId, passwordHash, email) => true }
// "UserID already taken", { DBService.exists(UserProfile.getClass().getName(), userId) }
)(UserProfile.apply)(UserProfile.unapply))
def index = Action {
Ok(views.html.signup(userForm))
}
def register = Action { implicit request =>
userForm.bindFromRequest.fold(
errors => BadRequest(views.html.signup(errors)),
user => Redirect(routes.Profile.index))
}
}
如您所见,我使用了一个测试验证来替换我的查找服务,该验证只返回true,以使示例更简单。为了完整起见,以下是我的UserDetail案例类:
case class UserProfile(
userId : String,
email: String,
passwordHash: String)
我是一个Scala新手和Play框架新手,如果这是一个非常琐碎的问题,则十分抱歉。
我做错了什么导致出现此错误?
这是添加自己的验证规则的正确方法吗?
跟进问题:如果一切顺利,我该如何重定向到引用刚刚验证的表单的页面?
Nik