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