Hi Les, Thanks for sharing!
One comment, though, is you actually can have onActivate without onPassivate. I've done this many times. Thanks, mrg On Sat, Aug 6, 2011 at 2:54 PM, robert baker <les.baker1...@gmail.com> wrote: > Hi, > > I've been in Tapestry training for the past week, have really enjoyed > it, and picked up some useful stuff along the way (if you've been > seeing "Clemson University" run across the tweet box, that was > connected with us). Mr. Lewis-Ship really gave a broad and deep > overview of how Tapestry works (thank you!), and I thought I would > share some of the things I personally got out of it in hopes it would > help someone else learning the framework. > > > * Activation and passivation in Tapestry work in concert -- can't have > one w/o the other. > - If you populate an instance variable on the page in onActivate, > return it back in onPassivate > - PageLink asks for activation context using onPassivate if you > don't supply context parameter > - May have to @InjectPage and supply what gets passivated beforehand > in some cases. > > * Play around with page URLs and see what happens > - What happens if you don't supply any activation context? > - What happens if the activation context is garbage? > - What happens if the activation context points to something you > shouldn't be able to access? > > * Do work in baby steps -- just try to get *something* visible and > work from there. > - Components should default as much as possible to aid this process. > > * JavaScript is very sensitive about syntax and loose about semantics > -- watching Firebug debugger religiously during development of > non-trivial JS almost a must. > - Any client-side IDs need to be passed down to client, or use > well-known class names on the client. > > * Ajax: All about what happens when, and breaking up responsibility > between server and client. > - Treat URLs going down to the client as immutable. > - Can "bake in" data into the URL that will be passed back up as a > parameter on the handling method server-side using "context" parameter > on *Link, Form, ProgressiveDisplay components. > - Keeping that in mind, what if you want to make an AJAX request > with dynamic number of parameters and/or with values not known at > render-time? Use "parameters" object parameter on > Tapestry.ajaxRequest() to add query parameters to the AJAX request. > > * If you're banging your head against the framework, it's okay to step > down to raw elements and do things manually. > - Request service (and @RequestParameter on method parameters) and > template property expansions (e.g. ${blah}) a good bridge between page > class and raw elements (prop expands for render-time, request parms > for submit-time). > > * Whatever tools you use, know them inside-out. > > > Thanks, > Les Baker > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org