@Julien HENRY <henr...@yahoo.fr>

If you issue a return statement in a page constructor before the components
are added, what happens?

1. the page renders normally
2. exception because missing components

Now for the answer: typically 2 is correct. But that got me thinking of all
the ways you can have 1 as a result (this would be a great list for a
twitter thread)

a. the components were added in a super-class constructor
b. the components were added in a sub-class constructor
c. the components were added in an onInitialize
d. the components were added in an onConfigure
e. the components were added in an onBeforeRender
f. the components were added using a Behavior (bad choice, but possible)
g. the page is invisible
h. the container that the components were added to is invisbile
i. the components are added in an IComponentInstantiationListener
j. the wicket:id's were escaped in the markup (e.g. awicket:id="...")
k. the components are added in an onInitialize of a child component (added
before the return, adding in child's constructor would fail because parent
is not know yet)
l. a custom RequestCycle adds the missing components in handleException, or
a IRequestCycleListener, or an IRequestHandler and restarts rendering (is
that necessary?)
m. an IComponentResolver creates the missing component(s) (not 100% sure
this works)

Perhaps others can find insidious ways of adding components to a page?

I think this would be quite a nice poll on twitter.

Martijn

Reply via email to