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
-~----------~----~----~----~------~----~------~--~---

Reply via email to