Simple example:

some.package.base;

import org.apache.tapestry5.annotations.Parameter;

public abstract class AbstractComponent {
        @Parameter(required=true, principal=true)//happens regardless of 
parameter settings, but.
        private String foo;

        String defaultFoo() {
             return "bar";
        }
}


some.package.components;

import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.MarkupWriter;
import some.package.base.AbstractComponent;

public class AComponent extends AbstractComponent {
    @Parameter
    private String baz;

   String defaultBaz() {
       return getFoo() + "-baz";
   }

   void beginRender(MarkupWriter writer) {
         writer.writeRaw("baz is: " + baz);
         writer.writeRaw(" Foo is: " + getFoo());
   }
}

Now if you include AComponent on a tapestry page and render, you get:

baz is: null-baz Foo is bar

So the use of getFoo in the defaultBaz method is invalid, /even though foo is a 
"principal" parameter/.  Note, however, that if I move (or duplicate) the "foo" 
parameter in the "AComponent" class, then things work as expected, and you get 
"baz is: bar-baz".

Anybody else see this behavior? 

Robert
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to