如何在通过Javascript重定向时保持StatefulSnippet var值

How to keep StatefulSnippet var values when redirecting through Javascript

本文关键字:StatefulSnippet var 重定向 Javascript      更新时间:2023-09-26

我有一个图像链接,当我点击它时,我想对一些类变量进行一些更改,然后重定向到其他页面并使用这些值。

这是我的代码,我使用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为null,我尝试了调试,selectedStudents有正确的值,但当重定向时它变为null。有什么想法吗?

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

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

以下是我脑海中出现的一些可能在这种情况下有效的解决方案:

  • 在外包装一个表单,并在onClickCallbackAcademic中通过JS提交。

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