Hans, I'm agreeing. I'm just saying that if you start treating the onIniliaze() as the place to create your components then you are stuck with the same problem as before:
class MyPage { MyPage() { } * onInitialize() <---- Using onInitialize in the page doesn't give you anything, so that is why its 'final' add(new MyPanel()); }* } class MyPanel { MyPanel() { log.debug("getPage() = " + getPage()); <= null add(new Label("id", getString("resKey")); <= does not resolve } } On Thu, Feb 10, 2011 at 2:08 AM, Hans Lesmeister 2 < hans.lesmeis...@lessy-software.de> wrote: > > Hi, > > > Clint Checketts wrote: > > > > I don't believe the goal of onInitiallize is to move all component > > creation > > from the constructor to onInitialize, since if you are adding the > > component > > to the parent in the onInitialize method then you are back to the problem > > of > > not being able to call getPage() in your components. > > > > I think it is the opposite: if I create and add components in their > respective constructors I do not have access to getPage(): > > > class MyPage { > MyPage() { > add(new MyPanel()); > } > } > > class MyPanel { > MyPanel() { > log.debug("getPage() = " + getPage()); <= null > add(new Label("id", getString("resKey")); <= does not resolve > } > } > > > So at least in my panels and other containers I would keep creating > components in onInitialize(). Is that right? > > Overridable factory methods in my base page (which should not be called > from > the constructor) are mainly there to create Components, so from where can > they be called if I can't override onInitialize()? I would not like to go > back to onBeforeRender and maintain a flag myself. > > Cheers > Hans > > -- > View this message in context: > http://apache-wicket.1842946.n4.nabble.com/final-Page-onInitialize-tp3250951p3298712.html > Sent from the Forum for Wicket Core developers mailing list archive at > Nabble.com. >