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

Reply via email to