This Tapestry stuff is hard.
"Jorge" <[email protected]>
| Newsgroups | gmane.comp.java.tapestry.devel |
|---|---|
| Message-ID | <[email protected]> |
I've been playing on and off with Tapestry for the past days , and I have mixed feelings about it, in one hand looking at the bundled examples, Tapestry seems to be as good as you guys advertise, on the other hand trying to do something with Tapestry it's proving to be a torture. First I'd like to say that English is not my native language, so my confusion maybe partially related to my poor understanding of the documentation (BTW congratulations, hardly never do I see a project that makes such an obvious effort in documenting itself). The first hurdle that I come across is the weird naming conventions that you guys follow, terms like "Visit", "Engine", "Service", "Gestures" "rewind" and "page recorders". I understand that the Visit is the place to store the Session State (why not call it Session?), as for the rest of the stuff I'm still fishing. For instance it's still unclear to me where to store application level variables. And how about page initialization. Apparently the method in which to perform page initialization is called "detach()"?!?, isn't this weird?, a "detach()" method to perform initialization!?! ... what's wrong with "init()" or "pageInit()" or "initialize()"?, is it only me that finds this stuff confusing? After digging in the docs the reason for the "detach()" became more clear, apparently there is a pool of pages and when there is a request, a page is retrieved (detached?) from the pool and the persistent properties of the page must be manually reseted (I'm talking from my ass I don't know for sure if this is what happens). But I have a question, why do I need to know that there is a pool? I have no interest at this time to know the magic behind the curtain, I'm just trying to use Tapestry, is it required to know the inner workings of Tapestry to be able to use it? I understand how pages intercommunicate (wheee ... no more parsing of parameters), but how do components "talk" to each other, case in point I have a "Portrait" component (it shows a picture from a list of available pictures) and a "PortraitExplorer" component, how can I make the "PortraitExplorer" tell the "Portrait" to show the next picture on the list? I also can't seem to find a way to make a component execute a method of the containing page , for example lets say I put the "PortraitExplorer" component and the "Portrait" component in a "ShowPicassoPictures" page and when I press the "NextPicture" button of the "PortraitExplorer" component I want to execute the incrementPicassoHitCount() of the "ShowPicassoPictures" page. I think that what I'm talking about is to have a method of the containing page as parameter of a component, is this possible? Another thing that I found weird is the "rewind". It seems to be one of the focal points in Tapestry but I don't understand it. From what I can gather it seems that Tapestry is doing the same work twice, and only producing HTML once, isn't this weird? Helper Beans... like the "EvenOdd" thingy , the whole "Helper Beans" stuff remains as one of the most confusing aspects of Tapestry is the Bean supposed to be the Model in a MVC design? Oh... perhaps it would be beneficial to make more clearer in the docs the dependency on CSS of the EvenOdd bean, I know its there but it took me a while to understand from where the alternating row colours where coming. This post is long already, so I better stop here. If someone could shed some light in some of my questions I would be forever grateful. I'm having a hard time trying to justify the time spent with Tapestry and the (almost)zero results so far. Jorge Chandra _______________________________________________ No banners. No pop-ups. No kidding. Introducing My Way - http://www.myway.com ------------------------------------------------------- This SF.net email is sponsored by: Microsoft Visual Studio.NET comprehensive development tool, built to increase your productivity. Try a free online hosted session at: http://ads.sourceforge.net/cgi-bin/redirect.pl?micr0003en