Same thing happens when using tapestry-core-5.0.6-20071007.110018-15.jar tapestry-ioc-5.0.6-20071007.110018-16.jar
Still nobody that knows if this is expected? I do not want to write a bug report if it is design decision to not support parent classes for page classes. On 9/19/07, Johan Maasing <[EMAIL PROTECTED]> wrote: > I have my page in the package > xxx.pages > It does not matter if I put the abstract BasePage parent class to my page in > xxx.base or not. Tapestry complains about > BasePage: method <init>()V not found > > If I add that constructor to my parent class the page works (almost) > as expected. > > It gets even stranger since if I add the no-args constructor to the > abstract parent class but still invoke the parameterized constructor > in the parent class from the concrete page class it looks like it > doesn't set the property of the parent class. > > So, is this expected behaviour? > > Index.html (removed html header) > -------- > <body> > <p>Superclass message set by constructor call from sub class: > ${superclassConstructorMessage}</p> > <p>Superclass message set by setter in sub class: > ${superclassSetterMessage}</p> > <p>Subclass message: ${subclassMessage}</p> > </body> > </html> > -------- > > Index.java > -------- > package nu.zoom.web.reloaded.pages; > > import nu.zoom.web.reloaded.base.BasePage; > > public class Index extends BasePage { > private String subclassMessage; > > public Index() { > super("Set from subclass by: super(\"Set from subclass by: > \");"); > setSuperclassSetterMessage("Set in subclass by setter"); > setSubclassMessage("Set by setter"); > } > > public String getSubclassMessage() { > return subclassMessage; > } > > public void setSubclassMessage(String subclassMessage) { > this.subclassMessage = subclassMessage; > } > > } > -------- > BasePage.java > -------- > package nu.zoom.web.reloaded.base; > > public abstract class BasePage { > private String superclassConstructorMessage; > private String superclassSetterMessage; > > public BasePage() { > super(); > } > > public BasePage(final String superclassConstructorMessage) { > super(); > this.superclassConstructorMessage = > superclassConstructorMessage; > } > > public String getSuperclassSetterMessage() { > return superclassSetterMessage; > } > > public void setSuperclassSetterMessage(String > superclassSetterMessage) { > this.superclassSetterMessage = superclassSetterMessage; > } > > public String getSuperclassConstructorMessage() { > return superclassConstructorMessage; > } > > } > > > On 9/19/07, Johan Maasing <[EMAIL PROTECTED]> wrote: > > Hi, > > no it was not in the root.base package. I didn't know about that one. > > Probably explains it, will try later tonight. I guess Tapestrys > > definition of POJO is a bit different from mine :-) > > > > Cheers, > > Johan > > > > On 9/19/07, Josh Canfield <[EMAIL PROTECTED]> wrote: > > > Hey Johan, > > > > > > I haven't had a need to define a custom constructor in my page classes, or > > > their base classes, I'm just use the default constructor. > > > > > > You mentioned that your base class was in "another package", but is it in > > > the special "base" package next to your "pages" package? > > > http://tapestry.apache.org/tapestry5/tapestry-core/guide/component-classes.html > > > > > > You can also use the page lifecycle methods for page level initialization. > > > http://tapestry.apache.org/tapestry5/tapestry-core/guide/lifecycle.html > > > > > > > > > Josh > > > > > > On 9/18/07, Johan Maasing <[EMAIL PROTECTED]> wrote: > > > > > > > > I was wondering if the public no-args constructor requirement on page > > > > classes also extends to their parent classes. > > > > > > > > This is my Start.html > > > > --- > > > > [<t:pagelink t:page="Index">Index</t:pagelink>] > > > > --- > > > > My Index.html contains only static text. > > > > > > > > My Start.java is an empty POJO. > > > > > > > > My Index.java looks like this (removed package): > > > > --- > > > > public class Index extends BasePage { > > > > > > > > public Index() { > > > > super("Test"); > > > > } > > > > } > > > > --- > > > > > > > > The BasePage.java (in another package from my pages) looks like this: > > > > --- > > > > public abstract class BasePage { > > > > private String title ; > > > > > > > > public BasePage(String title) { > > > > super(); > > > > this.title = title; > > > > } > > > > } > > > > --- > > > > > > > > I get the following error from tapestry when rendering Start.html, it > > > > points at the pagelink line and says: > > > > java.lang.NoSuchMethodError: xxx.BasePage: method <init>()V not found > > > > > > > > If I add a public no-args constructor to the BasePage (no changes to > > > > Index.java) it does not complain . Is this expected? > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > -- > > > -- > > > TheDailyTube.com. Sign up and get the best new videos on the internet > > > delivered fresh to your inbox. > > > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]