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