A RequestVar is only "live" for the duration of the request, and a redirectTo ends up sending a 307 temp redirect to the browser, which results in a new request. S.redirectTo does have an overload that allows you to pass a function that will be called when the redirected request is handled. Some skeleton code that uses this would look like:
... object myVar extends RequestVar[String]("") def mySnippet (...) ... { def processSubmit () { ... val currentMyVar = myVar.is S.redirectTo("/newPage", () => myVar(currentMyVar)) } ... } Notice that we need to introduce a "capture" val to hold the current value so that the closure function can re-set it when the redirect is processed. We briefly discuss this in the book, but I'll see about adding a more concrete example that discusses the approaches to passing state around between snippets. Derek On Sat, Apr 18, 2009 at 3:23 PM, bradford <fingerm...@gmail.com> wrote: > > Thanks, Tim. I worked around that issue. > > I would still like to know whether or not it's possible have > RequestVars carry over to the redirected page. I'm attaching a > modified demo. If I use just a var, it will maintain the state. If I > use RequestVar, it won't transfer the state. > > Well.. I couldn't find the attach button in Google Groups. Here's the > pasted code: (a modification of the Test.scala file found here: > > http://groups.google.com/group/liftweb/browse_thread/thread/db1e4631a2e3ae4d/c839dec82819b7cd > ). > > package com.foo.snippet > > import scala.xml.{NodeSeq,Text} > > import net.liftweb.http._ > import net.liftweb.util.Helpers > import S._ > import Helpers._ > > class TestSnippet extends StatefulSnippet { > val dispatch : DispatchIt = { > case "add" => add _ > case "show" => show _ > } > > object name extends RequestVar("empty") > > def add (xhtml : NodeSeq) : NodeSeq = { > def doSubmit () = { > println("Name = " + name) > this.redirectTo("/show") > } > > bind("form", xhtml, > "name" -> SHtml.text(name.is, name(_)), > "submit" -> SHtml.submit("Add", doSubmit)) > } > > def show (xhtml : NodeSeq) : NodeSeq = { > bind("display", xhtml, "name" -> Text(name.is)) > } > } > > > On Apr 18, 2:18 pm, Timothy Perrett <timo...@getintheloop.eu> wrote: > > Its talking about Hibernate session, not lift session. Perhaps you have a > > detached model or something your trying to work on? > > > > Cheers, Tim > > > > On 18/04/2009 19:08, "bradford" <fingerm...@gmail.com> wrote: > > > > > no session or session was > > > closed > > > > > I'll look into this some more. > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---