doCompetenceB render a button which user click and will pop a dialog for
create a competence.
*The competence have category property, I want this pop dialog know the
category which user already selected from the category tree.
*
On Thu, Dec 10, 2009 at 7:19 AM, David Pollak <feeder.of.the.be...@gmail.com
> wrote:

>
>
> On Mon, Dec 7, 2009 at 9:14 PM, Xuefeng Wu <ben...@gmail.com> wrote:
>
>> Hi David & Ross,
>>
>> Thank you for your help,
>> I understand RequestVar now, which muse be used in the same request.
>>
>> My case is that I have a tree and a separate button.
>> When use click the tree node, the separate button should know which node
>> is selected.
>>
>
> Without understanding how  def *doCompetenceB*(xhtml: NodeSeq,msg:
> String,competence: Competence): NodeSeq = { is called as part of the Ajax
> callback, I can't give you any advice.  Sorry.
>
>
>>
>> Right now I replace the separate button when use click the tree node and
>> it worked.
>> I don't want to use session and I think it's better not replace the
>> button.
>> But I don't have idea how to do.
>>
>> On Tue, Dec 8, 2009 at 12:49 PM, David Pollak <
>> feeder.of.the.be...@gmail.com> wrote:
>>
>>>
>>>
>>> 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<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<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<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.


Reply via email to