0

mongodb レコード ベースのモデルを実装しました。データ (イベント レコード) を DB に格納するためのフォームをコーディングしようとしています。

保存するオブジェクトのスニペットは次のとおりです。

class eventSnippet extends StatefulSnippet with PaginatorSnippet[event] {

  var dispatch: DispatchIt = {
    case "editForm" => editForm _
  }

  var editingevent = event.createRecord


  def editForm(xhtml: NodeSeq): NodeSeq = {
        ("#editName" #> editingevent.title.toForm &
         "#editDescription" #> editingevent.description.toForm &
         "#editDT" #> editingevent.date_time.toForm &
         "#editCat" #> editingevent.category.toForm &
         "#editPrivacy" #> editingevent.privacy.toForm &
          "type=submit" #> SHtml.submit(?("Save"), () => save )).apply(xhtml)
  }

  def save = {
    editingevent.save
    redirectToHome
  }}

エラーは次のとおりです。

class eventSnippet needs to be abstract, since:
[error] method page in trait Paginator of type => Seq[code.model.event] is not defined
[error] method count in trait Paginator of type => Long is not defined

クラスをabstractに変更している間、それはコンパイルされますが、ブラウザでエラーが発生します:

Message: java.lang.InstantiationException
sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30)
java.lang.reflect.Constructor.newInstance(Constructor.java:513)

私は sbt 0.7.5 と Scala 2.9.1 を使用しています。

4

1 に答える 1

1

Lift はスニペットのインスタンスを作成する必要があるため、抽象化することはできません。

あなたのスニペットには、ページネーションを必要とするものは何もありません。with PaginatorSnippet[event]クラスを抽象化するのではなく、単純に を削除する必要があります。

ページネーションが必要な場合は、pageおよびcountメソッドの実装を提供する必要があります。

class eventSnippet extends StatefulSnippet with PaginatorSnippet[event] {
  def page: Seq[event] = // return itemsPerPage events, starting at curPage*itemsPerPage

  def count: Long = // return total count of events.

  // ...
}
于 2012-06-13T18:23:54.890 に答える