在 class 阶段省略参数应用

Omiting parameter in case class apply

喂, 我正在尝试使用 Play2 反序列化表单数据,但我遇到了一个小问题。

代码:https://gist.github.com/Hajtosek/a355b800f334a584a547

implicit val registerForm = Form(
    mapping(
      "name" -> text,
      "surname" -> text,
      "login" -> text,
      "password" -> text,
      "email" -> text
    )
  )(User.apply)(User.unapply)
  implicit val userFormat = Json.format[User]
}

case class UserLoginData(login: String, password: String)

object User {
  def apply(name: String, surname: String, login: String, password: String, email: String) =
    new User(name, surname, login, password, email, List())
}

case class User(name: String, surname: String, login: String, password: String, email: String, skillSet: List[SkillRecord] = List()) {

}

我从表单中得到的数据是 (String,String,String, String,String) 但我的案例 class 需要 (String,String,String, String,String, List[myCustomThing]).

当我将鼠标悬停在 ide 中的红色文本上时,提示说没有足够的参数用于方法应用 (String,String,String, String,String)

这是我的新项目的注册表单,我试图覆盖ide apply in companion object 但也没有用。我还尝试过默认值和具有类似 result.Any 建议的选项?

此致,

灰人

您可以使用允许定义字段值的忽略函数

implicit val registerForm = Form(
    mapping(
      "name" -> text,
      "surname" -> text,
      "login" -> text,
      "password" -> text,
      "email" -> text,
      "skillSet" -> ignored(List.empty[SkillRecord])
    )
  )(User.apply)(User.unapply)