我有几个CRUD操作执行,每一个上的模型的集合(如比赛日程,球队花名册,比赛结果,技术统计数据,等等)。
最多在我玩的经验,这一点(仅仅几个月,1个项目现场),我一直与一个一对一的形式绑定到模型实例。
我知道我可以用数字指标表单字段名称,但随后如何绑定张贴的形式列出[产品型号]?
这是我的一个一对一绑定的样子:
// abstract away bindFromRequest to make binding more concise in controllers
def bindForm[T](f: play.api.data.Form[T])(implicit r: play.api.mvc.Request[_]) =
f.bindFromRequest fold(e=> Left(e.errorsAsJson), Right(_))
然后在控制器:
val result = for {
model <- bindForm(form).right
id <- dao.create(model) as json
} yield id
我想要做的是一样的,但不是模型绑定在成功时返回一个单一的模式,有它返回一个列表[产品型号],并传递到重载DAO创建/编辑/删除操作。
我看到有一个list
,一个可以作为一种形式映射的一部分使用的方法,但我有一种感觉,这将肆虐我的JDBC查询包装(ScalaQuery /油滑),其案例类/伴侣对象映射可能不会随着收藏品的特性发挥出色。
举例来说,比赛日程的现有映射是这样的:
object CompositeForm {
import play.api.data.{Form, Forms}, Forms._
import utils.Validator.Bindings.jodaLocalTimeFormat
val mapper = mapping(
'id -> ignored(0),
'gameDate -> jodaDate,
'gameType -> optional(text),
'location -> optional(text),
'team1 -> number,
'team2 -> number
)(Composite.apply)(Composite.unapply)
val form = Form( mapper )
}
使用list(gameDate), list(gameType)
,而不是那么意味着形式结合会返回一个复合实例,它的属性是所有集合-也许它会工作,但似乎并没有几乎一样干净/简单与集合工作模型实例。
想法表示赞赏;-)