I have a web page with a simple design where a NavigationPanel
contains a few links which replace the main panel with other panels.

My problem is that when I initialize this web page, it creates all of
the panels which will eventually replace a main panel (according to
the link in the NavigationPanel that the user has clicked) by calling
their constructors. Since the constructors initialize a bunch of
components and also retrieve data from a database, it takes a "long"
time to render the web page since it is also loading all of the other
panels.

Since I want to perform a kind of lazy loading (I only load the
components of the panels if the user has clicked on the corresponding
link in the NavigationPanel), I moved the code where I initialize the
components to the onBeforeRender() method instead of the constructor.
It worked fine for the first time I clicked a link but if I re-clicked
it, a wicket error would pop up since I was trying to add new
components that had already been added.

My solution was something like:

protected void onBeforeRender() {
  super.onBeforeRender();
                
  if(!firstTime) {
     return;
  }

  // create the components used in this panel
  ...
  firstTime = true
}


This way the components are created only if it is the first time I am
loading the panel.

My question is, is there a better or automatic way of doing this through wicket?
Thanks.

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

Reply via email to