A Box is a container that holds 0 or 1 elements(s). openOr means if the Box is Full return the element; otherwise return the parameter--my default value. One alternative approach would be to specify a default Loc.
------------------------------------- Peter Robinett<pe...@bubblefoundry.com> wrote: Thanks Naftoli and David, I'm starting to understand what I need to do. However, the solution has revealed a gap in my beginner's knowledge of Scala: why was my code printing out the Loc instead of "Couldn't open"? Second, even with foundParam.is within the for comprehension, I still need to get the the value out of the comprehension – the rest of my snippet is based upon it. So, I still need to openOr the Box, no? If so, how? Is there a more functional and Scalarific way to do this? Thanks for your help, Peter On Jul 1, 2:45 pm, David Pollak <feeder.of.the.be...@gmail.com> wrote: > On Wed, Jul 1, 2009 at 2:02 PM, Peter Robinett <pe...@bubblefoundry.com>wrote: > > > > > Thanks, David. Unfortunately I'm having a hard time figuring out how > > to get the foundParam. > > > Using your code, I have: > > val loc = for {req <- S.request; loc <- req.location} yield loc > > val l = loc openOr "Couldn't open" > > When in doubt, specify a type explicitly: > > val l: Loc[_] = loc openOr "Couldn't open" > > This will fail because you've got a Box[Loc[_]] and you're doing an openOr > with a String... the only common class between the two is Object. > > As another post suggested, do the foundParam.is inside the yield > > > > > > > println(loc) > > println(l) > > > The first println give me: > > Full(Loc(View List(nodes), <function>, LinkText(<function>), List())) > > > While the second shows that I am opening the Box: > > Loc(View List(nodes), <function>, LinkText(<function>), List()) > > > If I try to access my Loc object, I get compilation errors. For > > example, "val p = l.foundParam" leads to the error "value foundParam > > is not a member of java.lang.Object." The toString method works, while > > the title parameter gives me the same error. I believe I am using the > > latest Lift code (I ran "mvn -U jetty:run") and feel I must be missing > > something very simple here. > > > Any advice is much appreciated! > > > Peter > > > On Jun 29, 10:05 am, David Pollak <feeder.of.the.be...@gmail.com> > > wrote: > > > On Fri, Jun 26, 2009 at 6:39 PM, Peter Robinett <pe...@bubblefoundry.com > > >wrote: > > > > > Thanks, Derek and Jeppe, your responses were very helpful. I > > > > implemented Jeppe's solution and added my own snippet tag within > > > > _viewTemplate. Unfortunately, I spent the whole day trying to figure > > > > out how pass the current CRUDified object to my snippet. Do I retrieve > > > > it in _viewTemplate from S.params and add an attribute to the snippet > > > > tag? Or just retrieve it from S in the snippet? > > > > I've just made Loc.foundParam public. If you get the Loc from the Req > > from > > > S (for {req <- S.request; loc <- req.location}) you can access foundParam > > > which contains the current crudified object. > > > > Thanks, > > > > David > > > > > I think I'm missing > > > > something fundamental with the S object and snippets. As you can tell, > > > > I'm very new to Lift! Any advice is much appreciated. > > > > > Peter > > > > > On Jun 24, 11:01 am, Jeppe Nejsum Madsen <je...@ingolfs.dk> wrote: > > > > > On 24 Jun 2009, Peter Robinett wrote: > > > > > > > Hi all, > > > > > > > I'm using CRUDify on one of my models and I'd like to display some > > > > > > additional data on the view template. I believe that I need to > > > > > > override one of the model definitions with some sort of reference > > to > > > > > > my own XHTML file. Which one? _viewTemplate? Or perhaps the > > > > > > viewTemplate method? > > > > > > If you look at the source to CRUDify, you'll see > > > > > > def viewTemplate(): NodeSeq = pageWrapper(_viewTemplate) > > > > > > where > > > > > > def pageWrapper(body: NodeSeq): NodeSeq = > > > > > <lift:surround with="default" at="content"> > > > > > { > > > > > body > > > > > } > > > > > </lift:surround> > > > > > > def _viewTemplate = > > > > > <lift:crud.view> > > > > > <table id={viewId} class={viewClass}> > > > > > <crud:row> > > > > > <tr> > > > > > <td><crud:name/></td> > > > > > <td><crud:value/></td> > > > > > </tr> > > > > > </crud:row> > > > > > </table> > > > > > </lift:crud.view> > > > > > > So the simplest thing is to override _viewTemplate with something > > similar > > > > > to the above. This should be done on the companion objects where > > CRUDify > > > > > is mixed in.... > > > > > > /Jeppe > > > > -- > > > Lift, the simply functional web frameworkhttp://liftweb.net > > > Beginning Scalahttp://www.apress.com/book/view/1430219890 > > > Follow me:http://twitter.com/dpp > > > Git some:http://github.com/dpp > > -- > Lift, the simply functional web frameworkhttp://liftweb.net > Beginning Scalahttp://www.apress.com/book/view/1430219890 > Follow me:http://twitter.com/dpp > Git some:http://github.com/dpp --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---