OK, I just added some more explanation on passing state between snippets to
section 3.15 in the book. I just uploaded a new PDF. When you have a chance
could you look at it and let me know if that makes sense? Also, I wasn't
sure if this should be a separate section ("Passing Data Between Snippets" ?
) or not. Thoughts?

Derek

On Sat, Apr 18, 2009 at 6:08 PM, Derek Chen-Becker <dchenbec...@gmail.com>wrote:

> 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