Hi ,

When I use RequestVar get the message: RequestVar ....... was set but not
read

My code like this:
object MyMgr {
  ...
  Loc.Snippet("myFoo",myFoo)
 ...
   object myId extends RequestVar[Long](0)

   def myFoo(xhtml: NodeSeq): NodeSeq = {
            ....
            def selectNode = {

                myId .set(vId)

            }
            ....
           bind("",xhtml,
                 "node"->a(() => selectNode, Text(nodeName))
                )
   }

}

the RequestVar must be used at Class?

On Sat, Nov 21, 2009 at 12:09 AM, Ross Mellgren <dri...@gmail.com> wrote:

> RequestVar is the standard way of doing this. For example
>
> object MySharedInformation {
>     object myData extends RequestVar[List[Thing]](loadThings)
>     //                               ^^^^^^^^^^^  ^^^^^^^^^^
>     //                    Type of thing to store  How to initialize
> variable first time it's accessed
>
>     private def loadThings: List[Thing] = ...
> }
>
> class Snippet1 {
>     import MySharedInformation.myData
>     def render(ns: NodeSeq): NodeSeq = {
>         myData.is.map(thing => { ... })
>     }
> }
>
> class Snippet2 {
>     import MySharedInformation.myData
>     ...
> }
>
> The lifetime of the value is during the current request processing and
> any AJAX calls related to it.
>
> If you really want to initialize it in a snippet, then use a Box with
> a RequestVar, like this:
>
> object MySharedInformation {
>     object myData extends RequestVar[Box[List[Thing]]](Empty)
> }
>
> class LoaderSnippet {
>     import MySharedInformation.myData
>     def render(ns: NodeSeq): NodeSeq = {
>         myData.set(Full(...))
>     }
> }
>
> class ReaderSnippet {
>     import MySharedInformation.myData
>     def render(ns: NodeSeq): NodeSeq = {
>         // If the data has not been loaded, default to an empty list
>         val data = myData.is.openOr(Nil)
>         ...
>     }
> }
>
> class OtherReaderSnippet {
>     import MySharedInformation.myData
>     def render(ns: NodeSeq): NodeSeq = {
>         // Do two entirely different things if the data has versus
> has not been loaded
>         myData.is match {
>             case Full(data) => // do something when the data has been
> loaded
>             case _ => // do something when the data has not been loaded
>         }
>     }
> }
>
> HTH,
> -Ross
>
>
> On Nov 20, 2009, at 10:59 AM, Alex Black wrote:
>
> > I've got a template page, say foobar.html, that makes a number of
> > calls to functions in a snippet, e.g. mysnippet.foo1, mysnippet.foo2,
> > mysnippet.foo3.
> >
> > I'd like to do some initial work in foo1, e.g. retrieve some data and
> > do some work on it, then in foo2 and foo3 display parts of that data.
> >
> > Whats the easiest way to do this? I think I misunderstood the lift
> > book:
> >
> > "That means that for each request, Lift creates a new instance of the
> > snippet class to execute. Any changes you make to instance variables
> > will be discarded after the request is processed."
> >
> > I thought this meant that for a given HTTP request, there would be one
> > (and only one) instance of my snippet, so I could call several of its
> > methods and they could all access the snippet's member variables,
> > which would then be discarded at the end of the request.
> >
> > Am I going about this wrong? should I only have one snippet function
> > per template?
> >
> > Thx
> >
> > - Alex
> >
> > --
> >
> > You received this message because you are subscribed to the Google
> > Groups "Lift" group.
> > To post to this group, send email to lift...@googlegroups.com.
> > To unsubscribe from this group, send email to
> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com>
> > .
> > For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=
> > .
> >
> >
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to
> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=.
>
>
>


-- 
Scala中文社区:  http://groups.google.com/group/scalacn

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@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