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]