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")
  }

}

但是当我重定向到另一个页面时,我的 var selectedStudent 为空,我尝试调试并且 selectedStudent 具有正确的值,但是在重定向时它变为空。有任何想法吗?

4

1 回答 1

1

StatefulSnippet 使用 HTML 表单和隐藏参数将信息(应该使用哪个片段实例)传递到 Lift 的服务器端。

所以 JS 重定向将不起作用,因为它不会传递这些信息。

以下是我想到的一些可能适用于这种情况的解决方案:

  • 在您的 onClickCallbackAcademic 中包装表单并通过 JS 提交。

  • 不要使用 StatefulSnippet,而是使用 SessionVar 来存储您的 selectedStudent,这样您就可以在不提交表单的情况下使用它。

于 2012-09-01T23:45:46.367 回答