0) I don't usually extend components; I prefer building things based on composition. That said:

2) This will work iff your parent class also implements a "defaultName" method that the subclass overrides. Just tried it to be sure.

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.

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

Reply via email to