A very good summary. In terms of links and parameters:
It's pretty clear that there's some tension on links/URLs right now. On the one hand, I really like listener methods, and the mapping of query parameters to listener method arguments, with automatic conversion. However, the design of Tapestry 4 (i.e., all releases up to 4) is predicated upon full page renders. I suspect that, going forward, full page renders will often be the exception, rather than the rule. That is, you'll have a full page render, then a series of partial renders. In many cases, the result sent back to the client will not even be HTML markup, but will be an (XML?) data stream interpreted by JavaScript running in the browser. Further, if you look at the Ruby on Rails approach to graceful degradation, their equivalent of the HttpServletRequest has an isXHR() method. They do partial renders when this method is true, full page renders when it is false. The use an X-HDR HTTP header to differential the two ... clever! So, with Tapestry 4, we have many types of links, each linked to a particular engine service, which interpets the URLs and largely guides the request processing cycle. I agree that a simplification would be nice. I'm just starting to think about this in terms of Tapestry 5. I too would like to see a single Link component that can do PageLink, DirectLink and ExternalLink functionality, and then some. We might lose out on the DataSqueezer functionality in the process. Of course, DS is most useful when you are trying to squeeze a Serializable object as a parameter. For ints, strings, booleans, etc., it is pretty straightforward to convert back and forth between primitive values and string representations. I am thinking that Tapestry 5 will be able to more fully reconstitute the state of the page before invoking a delegate method (I'm going to have to create a cheat sheet of name changes!). In Tapestry 4, the For component can record page state into hidden fields within a Form. In Tapestry 5, the For component should be capable of doing the same thing outside a Form; each URL will include some page render state information (serialized, gziped, perhaps encrypted) that will be used, in concert of persistent page properties, to return the page to the state it was in when a the corresponding link rendered. This is what I attempted to do with the ActionLink component in Tapestry 1 days, but I'm smarter now :-) I have some concerns about excessive "growth" of URLs as information from a series of partial renders accumulates. I also don't fully understand the client-side part of the equation in terms of client-side scripts, Dojo event handlers, and partial renders. On 4/12/06, Brian K. Wallace <[EMAIL PROTECTED]> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > So what I'm gathering from this is: > > 1. Defaulting friendly URLs from a user perspective is a plus but has a > drawback of current implementation in both a hivemodule and web xml. > > 2. Changing the servlet to a servlet filter is/may be a plus. The caveat > here would be a) not backward compatible and b) different handling for > portlets - which may or may not be an issue (meaning 1 filter to handle > both vs. 1 filter for non-portlet, 1 for portlet) > > 3. Somewhat off-topic, the need for multiple types of links is not > clear. (ideally, I'd like to see a single @Link and have Tapestry figure > out what kind it needs to be by parameters, URL, or other identifying > marker. > > Are there any issues raised from this that I missed? > > Brian > > Howard Lewis Ship wrote: > > The tricky part is that if you use friendly URLs, you have to > > coordinate the hivemodule.xml configuration with the web.xml > > configuration. > > > > I frequently define new engine services, and new friendly URL schemes > > to go with them. > > > > > > On 4/10/06, Brian K. Wallace <[EMAIL PROTECTED]> wrote: > > I've been looking at the 'normal' use case and it appears as though > > Friendly URLs seem to be the 'preferred' method of displaying URLs. This > > being the case, would it not make more sense for Friendly URLs to be the > > 'default' for Tapestry? I am not proposing the removal of the ability to > > customize the way they are generated, only the default. > > > > In proposing this, however, I'm not proposing "true/false" for their > > enablement. Currently, when enabling Friendly URLs, the 'ugly' URLs are > > still available. I'd suggest three options: > > > > enabled, relaxed, and disabled. > > > > "enabled" (not backward compatible) would completely disable the ability > > to access the page/resources through the 'ugly' (original Tapestry) URL. > > In using ACEGI for path security, it's quite disturbing to get security > > enabled only to find access is open through the 'un-friendly' URL. > > > > "relaxed" (backward compatible) would present Friendly URLs by default, > > but 'ugly' URLs would still be accessible > > > > "disabled" (backward compatible) would present the original Tapestry > > URLs as it is now without the Friendly URLs. > > > > I'm still all for customization of the exact nature of the > > 'friendliness' (the current method of stating 'html' == page, 'direct' > > == direct, 'sdirect' == secure direct) such that users can specify what > > endings they want. I'm also searching for a message on the user list > > from quite a while ago that takes friendly URLs a step farther, but > > that's kind of outside the realm of this. > > > > Thoughts on this? (I don't see any value add for 'ugly' URLs, and if > > Friendly URLs were popular enough - and I must say they are to me with > > security external to Tapestry classes - can we not make it just a little > > easier to 'default' them?) > > > > Brian > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.2.5 (MingW32) > > iD8DBQFEPO9LaCoPKRow/gARAiLyAJwJZz5W6mV0x7ecCwjB0ncuVap4egCg0CBT > 6RBmRieHFOajMpJFywY6wU4= > =mJMm > -----END PGP SIGNATURE----- > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Howard M. Lewis Ship Independent J2EE / Open-Source Java Consultant Creator, Jakarta Tapestry Creator, Jakarta HiveMind Professional Tapestry training, mentoring, support and project work. http://howardlewisship.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
