在scala的play 2中将表单映射到case类的错误

时间:2013-09-29 03:24:02

标签: scala play2-mini

val registrationForm: Form[Registration]=Form(
mapping(
"fname"->text(minLength=2),
"lname"->text(minLength=1),
"userEmail"->text(minLength=5),
"userPassword" -> tuple(
    "main" -> text(minLength = 6),
    "confirm" -> text
  ).verifying(
    // Add an additional constraint: both passwords must match
    "Passwords don't match", userPassword => userPassword._1 == userPassword._2
  ),
"gender"->number,
"year"->number, 
"month"->number, 
"day"->number
)
{
// Binding: Create a User from the mapping result (ignore the second password and the 
accept field)
(fname, lname, userEmail, userPassword, gender, year, month, day, _) => 
Registration(fname,lname,userEmail,userPassword._1, gender, year,month,day)//error here
 } 
 {
  // Unbinding: Create the mapping values from an existing User value
user => Some(user.fname, user.lname, user.userEmail,(user.userPassword, ""),
user.gender, user.year, user.month, user.day, false)
}

)//end registrationForm

我的案例类是 -

case class Registration(fname:String, lname:String, userEmail:String,
userPassword:String, gender:Int, year:Int,month:Int, day:Int )

上面的代码给出错误 - 错误的参数数量; expected = 8.我已对发生错误的行发表评论

1 个答案:

答案 0 :(得分:0)

apply函数的参数列表太大了:

(fname, lname, userEmail, userPassword, gender, year, month, day, _)

它应该是8,因为您的表单包含8个元素:

(fname, lname, userEmail, userPassword, gender, year, month, day)