ScalaのPlayFrameworkドキュメントは、フォームをケースクラスに暗黙的にマッピングするサンプルを示しています。
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)
さらに、フォームがUser
の名前(String)と(String)をcarId
返すと仮定しましょう。
val userForm = Form(
mapping(
"name" -> text,
"car" -> carRepository.findById(nonEmptyText) // concept I wish
)(User.apply)(User.unapply)
)
carId
たとえばフォームによって提供されたものを使用して、この希望のラインで車をインスタンス化し、carId
が空でないことを確認する方法はありますString
か?