Forms Play Framework 2.3.x中泛型类的表单处理

Forms Play Framework 2.3.x中泛型类的表单处理,forms,validation,scala,inheritance,playframework-2.3,Forms,Validation,Scala,Inheritance,Playframework 2.3,我有一组基于sealed trait的模型类,如下所示: sealed trait Base { def baseValue: String } case class ChildA( baseValue: String childAValue: Int ) extends Base case class ChildB( baseValue: String childBValue: String ) extends Base 如何正确处理,即如何定义基于给定输入

我有一组基于
sealed trait
的模型类,如下所示:

sealed trait Base {
   def baseValue: String
}

case class ChildA(
   baseValue: String
   childAValue: Int
) extends Base

case class ChildB(
   baseValue: String
   childBValue: String
) extends Base

如何正确处理,即如何定义基于给定输入数据生成类型为
Base
的对象。我需要一个额外的字段
$type
,它保存特定子类型的类类型信息。理想情况下,表单还可以处理带有相应表单错误的未知类型。

如果希望表单生成类型为
Base
的对象(即类型为
ChildA
或类型为
ChildB
),可能您应该查看Scala的
类型。更多信息:

我简化了这个问题的模型结构。实际上,
Base
类有两个以上的子类。这个想法是,表单应该产生
Base
实例,而不是
或者[ChildA,ChildB]
,那么我想您需要构造函数在子类中实例化
Base
类型的实例,可能通过apply方法。此外,每个子类型的隐式转换器也可以将它们转换为
Base
类型。