Hi Robin,

we should try to improve that. Please create a new issue with a quickstart.

Thanks
Sven


On 03/28/2014 09:16 AM, Robin Shine wrote:
Hi Sven,

Thanks for looking into this. I started a new wicket project from scratch using 
Wicket maven archetype, and it does work as expected! Then I checked into my 
project to find the difference, and tt turns out that this issue will occur as 
long as below code is added in wicket WebApplication.init():


         getComponentInstantiationListeners().add(new 
IComponentInstantiationListener() {
@Override
             public void onInstantiation(Component component) {
                 component.add(new Behavior() {

                 });
             }
});

It seems that the instantiation listener adds the behavior to the page at very 
start of the page constructor, and then the page is marked as dirty to cause 
onInitialize() being called afterwards. Is this a bug or expected behavior?


Regards
Robin



________________________________
  From: Sven Meier <[email protected]>
To: [email protected]
Sent: Thursday, March 27, 2014 10:49 PM
Subject: Re: Avoid calling Page.onInitialize if page constructor throws an 
exception
Hi,

#onInitialize() is not called here with 6.14.0 and 6.15.0-SNAPSHOT.

Regards
Sven


On 03/27/2014 03:30 PM, Robin Shine wrote:
Hi All,

We are glad to see that the issue WICKET-5387 (Page#onInitialize called after 
an exception in the constructor of Page) has been resolved in 6.13.0. However 
when I tried this version (and 6.14.0) with below code, the issue still exist:

public class TestPage extends WebPage {

       public TestPage() {
           throw new RuntimeException("exception");
       }

       @Override
       protected void onInitialize() {
           super.onInitialize();
System.out.println("onInitialize");
       }
}

As you can see from above code, I intentionally throws an exception in TestPage 
constructor and hoping that onInitialize() method is not called when I visit that page. 
But the result is that "onInitialize" is still getting called in this case. Am 
I understanding WICKET-5387 incorrectly? And is there any approach to prevent 
onInitialize() from being called in case of a constructor exception? We want this as 
onInitialize() might rely on some params setup in the constructor, and calling 
onInitialize() will lead to other exceptions hiding exceptions thrown in constructor.

Regards

Robin


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to