Scala的Play Framework文档显示了一个隐式地将表单映射到案例类的示例:
case class User(name: String,age: Int) val userForm = Form( mapping( "name" -> text,"age" -> number )(User.apply)(User.unapply) )
我们注意到在这个独特的样本中只使用了原始值.
如果我们做这个改动怎么样:
case class Car(brandName: String) case class User(name: String,car: Car)
此外,我们假设表单返回用户名(String)和carId(String)
val userForm = Form( mapping( "name" -> text,"car" -> carRepository.findById(nonEmptyText) // concept I wish )(User.apply)(User.unapply) )
有没有办法在这个希望的线路上实例化汽车,例如由表格提供一些carId并确保carId不是空字符串?
解决方法
对于问题的第一部分,文档还显示了嵌套值:
case class Car(brandName: String) case class User(name: String,car: Car) val userForm = Form( mapping( "name" -> text,"car" -> mapping( "brandName" -> text )(Car.apply)(Car.unapply) )(User.apply,User.unapply) )