我有一个图像链接,当我单击它时,我想对某些类变量进行一些更改,然后重定向到其他页面并使用这些值。
这是我的代码,即时通讯使用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,我尝试调试,并且selectedStudent具有正确的值,但是在重定向时它将变为null。有任何想法吗?
最佳答案
StatefulSnippet使用HTML表单和隐藏参数将信息(应使用哪个片段实例)传递到Lift的服务器端。
因此,JS重定向将不起作用,因为它不会传递这些信息。
我想到了一些在这种情况下可能有效的解决方案:
在您的onClickCallbackAcademic中包装表单并由JS提交。
代替使用StatefulSnippet,使用SessionVar存储您的selectedStudent,这样您就可以在不提交表单的情况下使用它。