2

クリックすると、いくつかのクラス変数に変更を加えてから、他のページにリダイレクトしてそれらの値を使用したいという画像リンクがあります。

これが私のコードです。StatefulSnippetを使用しています。

class MySnippet extends StatefulSnippet {

  var selectedStudent: Student=null

  def students =
    ".tabla" #> studentsList.map { s =>
      "#id" #> s.Id &
      "#name" #> s.Name & 
      "#surname" #> s.Surname &
      "#buttonAcademic [src]" #> tickUrl &
      ".clickableAcademic [onclick]" #> SHtml.onEvent(onClickCallbackAcademic(s))
    }

  def onClickCallbackAcademic(student: Student,xhtml:NodeSeq)(s: String): JsCmd = {
    //makes some stuff to student
    selectedStudent = student
    JsCmds.RedirectTo("/Academic")
  }

}

しかし、他のページにリダイレクトすると、変数selectedStudentがnullになり、デバッグを試みましたが、selectedStudentの値は正しいのですが、リダイレクトするとnullになります。何か案は?

4

1 に答える 1

1

StatefulSnippetは、HTMLフォームと非表示パラメーターを使用して情報(どのスニペットインスタンスを使用する必要があるか)をLiftのサーバー側に渡します。

したがって、JSリダイレクトはそれらの情報を渡さないため、機能しません。

この場合に機能する可能性のあるいくつかの解決策が私の頭に浮かびます:

  • フォームを外部でラップし、JSがonClickCallbackAcademicで送信します。

  • StatefulSnippetを使用する代わりに、SessionVarを使用して選択したStudentを保存し、フォームを送信せずに使用できるようにします。

于 2012-09-01T23:45:46.367 に答える