On Mon, Dec 7, 2009 at 8:46 PM, Xuefeng Wu <ben...@gmail.com> wrote:

> My current solution is that when user select a tree node, I replace the add
> button dependence on the node.


If you can create a very simple example of what you're trying to do, we can
help you debug the actual, runnable code.


>
>
> 2009/12/8 Xuefeng Wu <ben...@gmail.com>
>
> Hi Ross,
>>
>> Yes it's not in the same request.
>>
>> My case is:
>> When user select a tree node, I want to store this nodeId and If user
>> click a button to create a child node, I want to get the selected node.
>>
>> I use ModalDialog when user click the button to create now node.
>>
>> On Tue, Dec 8, 2009 at 11:50 AM, Ross Mellgren <dri...@gmail.com> wrote:
>>
>>> I'm sorry, I'm having trouble following your code, I think too much of
>>> the surrounding code and templates is missing for me to reason about why you
>>> would have a problem.
>>>
>>> I set up a quick example app, so maybe the code from that will help you.
>>> It is here:
>>>
>>> http://github.com/Dridus/test-rqvarlog
>>>
>>> If I understand you correctly, you're getting a log message like this
>>> one:
>>> WARN - RequestVar test.snippet.HelloWorld$myVar$_ was set but not read
>>>
>>> This message is from the code I posted:
>>>
>>> package test.snippet
>>>
>>> import _root_.scala.xml.NodeSeq
>>> import _root_.net.liftweb.http.RequestVar
>>> import _root_.net.liftweb.util.Helpers
>>> import Helpers._
>>>
>>> class HelloWorld {
>>>     object myVar extends RequestVar[Int](0)
>>>
>>>     def howdy(in: NodeSeq): NodeSeq = Helpers.bind("b", in, "time" ->
>>> (new _root_.java.util.Date).toString)
>>>
>>>     def increment(in: NodeSeq): NodeSeq = {
>>>         myVar.set(myVar.is + 1)
>>>         <div>increment called</div>
>>>     }
>>>
>>>     def show(in: NodeSeq): NodeSeq = <div>show called -- myVar.is {
>>> myVar.is }</div>
>>> }
>>>
>>>
>>> <lift:surround with="default" at="content">
>>> <h2>Welcome to your project!</h2>
>>>  <p>
>>>       <lift:helloWorld.howdy>
>>>         <span>Welcome to test-rqvarlog at <b:time/></span>
>>>       </lift:helloWorld.howdy>
>>>
>>>       <lift:HelloWorld.increment />
>>>       <lift:HelloWorld.increment />
>>> <!--      <lift:HelloWorld.show /> -->
>>>     </p>
>>> </lift:surround>
>>>
>>> If I uncomment the line with HelloWorld.show in the template, the log
>>> message goes away because myVar.is is called.
>>>
>>> If you are still getting the message, then that should mean that you are
>>> not calling myVar.is in the same request.
>>>
>>> HTH,
>>> -Ross
>>>
>>> On Dec 7, 2009, at 10:28 PM, Xuefeng Wu wrote:
>>>
>>> My code :
>>>
>>>
>>> object CompetenceMgr {
>>>
>>>  Menu(Loc("Competence", List("competence", "index"), S.?("Competence"),
>>> ifIsLoggedIn,
>>>      ...
>>>      Loc.Snippet("buildCompetenceDicRows", buildCompetenceDicRows),
>>>                    Loc.Snippet("addCompetenceB", addCompetenceB),
>>>                 ....
>>>
>>> private object *_categoryId *extends RequestVar[Long](0)
>>>
>>> //build a competenceDic table
>>>   def buildCompetenceDicRows(xhtml: NodeSeq): NodeSeq = {
>>>     ... ...
>>>     def *makeCategoryRow*(r: Category) = {
>>>          .....
>>>        def *categoryNode*: NodeSeq = {
>>>        def categoryNodeLinkId = "categoryNodeLinkId-" + r.id
>>>        def selectCategoryNode: JsCmd = {
>>>         * //here: set the _categoryId, but didn't work*
>>>           _categoryId.set(r.id.is)
>>>          ... ..
>>>        }
>>>          <span id={categoryNodeLinkId} class='node_span'>{a(() =>
>>> selectCategoryNode, Text(r.title.is))}</span>
>>>        }
>>>        <tr ><td><span class="folder draggable droppable"
>>>  id={categoeryId}>{categoryNode}</span></td></tr> % ("id" -> nodeId) %
>>> ("class" -> nodeClass)
>>>     }
>>>     def *buildCategoryRows*: NodeSeq = {
>>>       val resourceData = Category.categoriesTreeList
>>>       (empty /: resourceData)((l, r) => l ++ *makeCategoryRow*(r))
>>>        }
>>>      *buildCategoryRows*
>>>   }
>>>
>>>   //it's a button for create competence
>>>  def *addCompetenceB*(xhtml: NodeSeq): NodeSeq =
>>> doCompetenceB(xhtml,"add Competence",null)
>>>  //a button for create or edit competence
>>>   def *doCompetenceB*(xhtml: NodeSeq,msg: String,competence:
>>> Competence): NodeSeq = {
>>>         a(() => {
>>>               *//here I try to get the categoryId if it selected.*
>>>               val catId: Long = _categoryId.is
>>>              S.runTemplate(List("competence","_competence")).
>>>              map(ns =>
>>> ModalDialog(doCompetenceEditor(ns,catId,competence))) openOr
>>>              Alert("Couldn't find _competence template")},
>>>              Text(msg),"class" -> "button"
>>>               )
>>>   }
>>>
>>>
>>>
>>>
>>> On Tue, Dec 8, 2009 at 11:02 AM, Ross Mellgren <dri...@gmail.com> wrote:
>>>
>>>> Well if you logically expected it to be read but it wasn't, it might
>>>> indicate a bug to you or help in diagnosis.
>>>>
>>>> I'm not sure I understand your reply fully -- when you added myId.isdid 
>>>> the log message go away? If not, could you post your code?
>>>>
>>>> -Ross
>>>>
>>>> On Dec 7, 2009, at 9:39 PM, Xuefeng Wu wrote:
>>>>
>>>> I use myId.is but get nothing.
>>>> I don't know what I could do with the information.
>>>>
>>>> On Tue, Dec 8, 2009 at 10:19 AM, Ross Mellgren <dri...@gmail.com>wrote:
>>>>
>>>>> I think that message is just informative, letting you know that you
>>>>> don't seem to be using the request var fully (perhaps due to typo, or code
>>>>> refactoring that made it unused, or something.)
>>>>>
>>>>> I think it'll go away if you access the variable somewhere using
>>>>> myId.is.
>>>>>
>>>>> -Ross
>>>>>
>>>>> On Dec 7, 2009, at 9:02 PM, Xuefeng Wu wrote:
>>>>>
>>>>> 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.
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> 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=en.
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> 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.
>>>>
>>>>
>>>>
>>>> --
>>>> 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=en.
>>>>
>>>
>>>
>>>
>>> --
>>> 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.
>>>
>>>
>>>  --
>>> 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=en.
>>>
>>
>>
>>
>> --
>> Scala中文社区:  http://groups.google.com/group/scalacn
>>
>
>
>
> --
> 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<liftweb%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=en.
>



-- 
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Surf the harmonics

--

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