使用链接传递数据的“最佳”方法是什么?
目前我将数据保存在SessionVAr中并在另一侧将其取出。但这感觉非常笨拙。还有其他办法吗?
object activeHw extends SessionVar[Box[Hw]](Empty)
object AddHwScreen extends LiftScreen {
object hw extends ScreenVar(activeHw.is.getOrElse(Hw.createRecord))
addFields(() => hw.is)
def finish() = {
redirectTo("/hw")
}
}
class HwSnippet extends StatefulSnippet with PaginatorSnippet[Hw] {
var dispatch: DispatchIt = {
case "showAll" => showAll _
}
def showAll(xhtml: NodeSeq): NodeSeq = {
page.flatMap(hw => {
(".hwDetail *" #> link ("hw/detail", () => activeHw.set(Full(hw)), Text("Detail")) &
".hwSn *" #> hw.sn).apply(xhtml)
})
}
def redirectToHome = {
redirectTo("/hw")
}
}
答案 0 :(得分:3)
如果你有:
object MyInfo extends RequestVar("nothing")
然后:
val str = (new java.util.Date).toString
S.redirectTo("/", () => MyInfo.set(str))
通过在执行redirectTo之前计算它来捕获值,然后执行将RequestVar设置为值的函数。 RequestVar可以被目标页面访问。
答案 1 :(得分:1)
如果它在SessionVar中,那么就不需要在链接中传递它。只需在下一个代码段中访问它。
更新抱歉,我误解了您的问题。您已经这样做但宁愿在链接上传递它(作为查询参数?)。通常,这不是提升方式:有人可以更改值等。如果您真的想要,可以向链接添加查询参数,然后使用S.param("the-name")
在下一个代码段中访问它。 / p>