![](/img/trans.png)
[英]The method form(Class<T>) from Form class is deprecated in Play! Framework
[英]provide own unapply method in play framework 2 with scala and circumflex-orm class
我想將play 2.0框架中的表單綁定與來自circumflex-orm( 網站 )的擴展Record的類結合起來。
這些是我的類對象:
class Task extends Record[Long, Task] with IdentityGenerator[Long, Task] {
def this(name: String, description: String) = {
this()
this.name := name
this.description := description
}
val id = "id".BIGINT.NOT_NULL.AUTO_INCREMENT
val name = "name".VARCHAR(255).NOT_NULL
val description = "description".TEXT.NOT_NULL
def PRIMARY_KEY = id
def relation = Task
}
這就是我嘗試使用游戲形式:
val taskForm: Form[Tasks] = Form(
mapping(
"name" -> text,
"description" -> text
)
{(name, description) => Task(name, description)}
{(t: Task) => Option(t.name(), t.description()) }
)
但我得到這樣的錯誤:
found : models.Task => Option[(String, String)]
required: Unit => Option[(String, String)]
{(t: Task) => Option(t.name(), t.description())}
如果我用一些替換Option:
found : models.Task => Some[(String, String)]
required: Unit => Option[(String, String)]
{(t: Task) => Some(t.name(), t.description())}
我現在很無能,任何提示都會受到贊賞。
非常感謝。
編輯:我做了一個基本的錯誤,我確實命名了表格:
val taskForm: Form[Tasks] = Form(
當類的名稱是“任務”時。 所以我可以改為:
val taskForm: Form[Task] = Form(
mapping(
"name" -> text,
"description" -> text
) ( (name, description) => Task )
( (t: Task) => Option() )
)
現在我得到一個不同的錯誤:
Unspecified value parameter x
( (t: Task) => Option() )
我在eclipse中創建了一個帶有所需依賴項的簡單項目,你可以在這里下載並查看它,如果它有幫助: 基本表單示例
我的評論錯了,以下片段為我工作。
case class Foo(x: String, y: String)
val taskForm = Form(
mapping(
"name" -> text,
"description" -> text)
((name, description) => Foo(name, description))
((t: Foo) => Some(t.x, t.y)))
我將circumflex添加到依賴項並嘗試了您的確切示例。 我剛剛補充說,它對我來說很好
object Task extends Task with Table[Long, Task]
我相信你忘了將它包括在問題中。 所以我只能建議清理和重建整個項目。
PS和我換線了
{ (name, description) => new Task(name, description) }
但很明顯。
主要問題是如果使用circumflex,則不編寫case類,因此默認情況下沒有apply和unapply方法。
您必須在Task伴隨對象中編寫自己的apply和unapply方法,如下所示:
object Taks extends Task with Table[Long, Task] {
def apply(name:String,description:String) = {
var t = new Task()
t.name := name
t.description := description
t
}
def unapply(t:Task) = Some(t.name(),t.description())
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.