I just spent a couple hours tracking down a problem which I guess was kind of dumb on my part, but resulted from what might be a common misunderstanding of the way component bindings work. I wonder if maybe it wouldn't be appropriate to have it listed as a gotcha somewhere in the documentation (or if it already is, I guess I'd like to read what else is on the list!)...
The misunderstanding is that when you bind a component parameter, you are doing something similar to passing an argument to a function - that something is being transferred at the moment control passes from the containing page to the contained component, when in fact the only way stuff moves from the caller into the component is by the component directly accessing the parameter by calling the parameter's accessor. Not understanding this, it was especially surprising to me that I could even set the value of the binding to an illegal OGNL expression, and that there would be no exception if the component never accessed it. I guess what's most surprising to me in retrospect is that it was possible to be programming in Tapestry for a month or so, creating custom components, etc., with this misunderstanding. I only discovered it when I upgraded to Tapestry 4.0 and had to change the bindings around a bit. Noam Solomon (shopping.com)
