On Thu, Feb 12, 2009 at 12:58 PM, Robert Zeigler <robe...@scazdl.org> wrote: > 0) I don't usually extend components; I prefer building things based on > composition. That said: >
Which is the point of Tapestry! > 2) This will work iff your parent class also implements a "defaultName" > method that the subclass overrides. Just tried it to be sure. > That's an unintended behavior. > 3) You can provide getters and setters for the property. Promise. :) But the > question at stake is /when/ you can access the bound value for supplying a > default, and in that, you may be correct. Getter & setters will completey work. To the instrumented component, there's no difference between a getter/setter and any other (private) method that accesses the field. > > Robert > > On Feb 12, 2009, at 2/122:18 PM , Yunhua Sang wrote: > >> Hi Robert, >> >> 2) I tried your way, it doesn't work; it doesn't work even back to 5.0.18. >> 3) I don't think the get/set methods would work for parameters; look >> at ParameterWorker class, it's fairly complicated because of the >> implementation of the binding magic. >> >> Thanks, >> Richard >> >> >> On Thu, Feb 12, 2009 at 2:56 PM, Robert Zeigler <robe...@scazdl.org> >> wrote: >>> >>> 1) Since Child extends Parent, it already has a name @Parameter. >>> 2) If you want to provide the default in the child, you can always >>> provide >>> the "default" method: >>> String defaultName() { >>> return "Tom"; >>> } >>> 3) Otherwise, access in the child via code is mediated through normal >>> java >>> channels: create a public (or protected) getter and setter in the Parent >>> class. >>> >>> Robert >>> >>> On Feb 12, 2009, at 2/1212:45 PM , Yunhua Sang wrote: >>> >>>> Hi Howard, >>>> >>>> Can you show me in a child component, how to access a parameter >>>> defined in parent by using another way? I cannot find api which isn't >>>> internal about it. By the way, seems it's also diffcult to provide >>>> default binding for a parameter within parent because function >>>> bindParameter(String parameterName, Binding binding) is internal as >>>> well. >>>> >>>> Thanks, >>>> Yunhua >>>> >>>> On Thu, Feb 12, 2009 at 11:10 AM, Howard Lewis Ship <hls...@gmail.com> >>>> wrote: >>>>> >>>>> It looks to me like theres an ambiguity here: I don't think a child >>>>> component should be allowed to declare a second parameter, "name" in >>>>> this example, that is already defined in a super-class. >>>>> >>>>> On Wed, Feb 11, 2009 at 12:20 PM, Yunhua Sang <yunhua.s...@gmail.com> >>>>> wrote: >>>>>> >>>>>> Hello Howard, >>>>>> >>>>>> It turns out the error occurs only when the child wants to provide its >>>>>> own default binding for a parameter originally defined in parent; >>>>>> example: >>>>>> >>>>>> public class Parent { >>>>>> @Parameter >>>>>> private String name; >>>>>> void setupRender() { >>>>>> name.toUpperCase(); // NPE happens here >>>>>> } >>>>>> } >>>>>> >>>>>> public class Child extends Parent{ >>>>>> @Parameter("prop:name") >>>>>> private String name; >>>>>> public String getName() { >>>>>> return "Tom"; >>>>>> } >>>>>> } >>>>>> >>>>>> Page class: >>>>>> public class ChildExample { >>>>>> @Component >>>>>> private Child child; >>>>>> } >>>>>> >>>>>> Template ChildExample.tml: >>>>>> <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> >>>>>> <h3>Test</h3> >>>>>> <t:child t:id="child"/> >>>>>> </html> >>>>>> >>>>>> I am sorry for my previous inaccurate information and thanks for >>>>>> looking into it. >>>>>> >>>>>> Yunhua >>>>>> >>>>>> >>>>>> On Wed, Feb 11, 2009 at 2:15 PM, Howard Lewis Ship <hls...@gmail.com> >>>>>> wrote: >>>>>>> >>>>>>> I'm not aware of anything that's changed in this area; could you >>>>>>> elaborate? >>>>>>> >>>>>>> On Wed, Feb 11, 2009 at 10:56 AM, Yunhua Sang <yunhua.s...@gmail.com> >>>>>>> wrote: >>>>>>>> >>>>>>>> Hello all, >>>>>>>> >>>>>>>> It seems there is no clear document about how to access a parameter >>>>>>>> defined in parent component; previous to 5.0.18, I was using the way >>>>>>>> of declaring the parameter again in child class and it worked well; >>>>>>>> however looks like some changes in 5.1.0.0 broke the way, seems >>>>>>>> there >>>>>>>> is no link between the parameter with same name in parent and child >>>>>>>> now. >>>>>>>> >>>>>>>> The problem is when I am USING a tapestry component, it's such a >>>>>>>> comfortable experience; but when I write a sub-class of a component, >>>>>>>> I >>>>>>>> am getting frustrated: a lot of methods are package visible; there >>>>>>>> is >>>>>>>> no clear way for parameter manipulation, a typical question: can I >>>>>>>> update an attibute of parameter in parent class? If inheritance is >>>>>>>> not >>>>>>>> a good practice in Tapestry, there should be a document about it. >>>>>>>> >>>>>>>> Thanks in advance for any help, >>>>>>>> Yunhua >>>>>>>> >>>>>>>> >>>>>>>> --------------------------------------------------------------------- >>>>>>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>>>>>>> For additional commands, e-mail: users-h...@tapestry.apache.org >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Howard M. Lewis Ship >>>>>>> >>>>>>> Creator Apache Tapestry and Apache HiveMind >>>>>>> >>>>>>> --------------------------------------------------------------------- >>>>>>> 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 >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Howard M. Lewis Ship >>>>> >>>>> Creator Apache Tapestry and Apache HiveMind >>>>> >>>>> --------------------------------------------------------------------- >>>>> 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 >>> >>> >>> --------------------------------------------------------------------- >>> 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 > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > -- Howard M. Lewis Ship Creator Apache Tapestry and Apache HiveMind --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org