Era*_*dan 8 scala playframework playframework-2.0
我是Play框架的新手,并且已经过了2.1 样本,在这个computer-database例子中,我发现了以下不完全理解的表单定义.
什么是角色Computer.apply和Computer.unapply在这里?
val computerForm = Form(
mapping(
"id" -> ignored(NotAssigned:Pk[Long]),
"name" -> nonEmptyText,
"introduced" -> optional(date("yyyy-MM-dd")),
"discontinued" -> optional(date("yyyy-MM-dd")),
"company" -> optional(longNumber)
)(Computer.apply)(Computer.unapply)
)
Run Code Online (Sandbox Code Playgroud)
(来自controllers/Application.scala)
编辑:这似乎是一个很好的资源:https://groups.google.com/forum/?fromgroups =#!topic/play-framework/dxNQ8E81YJs但仍不确定我完全了解全局.
您应该了解Scala上下文中应用/取消应用的内容,因为它不是特定于Play2 /表单.
在apply方法中,我们获取所需的参数并返回我们感兴趣的类的新实例,因为我们在unapply中执行反向操作 - 我们获取实例并提取所需信息并以元组的形式返回它们.
简而言之:apply用于从参数构造计算机对象.unapply用于相反的情况,从Computer对象中提取参数.
当您想要将表单绑定到案例类的字段(在本例中Computer)时,这是 Play 中的常见模式。
该mapping方法允许您提供构造和解构函数,这些函数将被调用以填充表单并从中提取数据。
由于在这里您想要转到/来自Computer,因此您需要一种方法来创建Computerfrom 参数,以及一种从 a 中提取参数的方法Computer,这正是Computer.applyand Computer.unapply。
相关示例: Play 文档中关于表单的映射示例。