Hi,

I think this is the expected behavior.
onBeforeRender() is called first on the parent and then on all its children.
onBeforeRender() is the last method where Enclosure can check its
controlling child for existence.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Wed, Jul 5, 2017 at 12:01 PM, Korbinian Bachl <
[email protected]> wrote:

> Hi,
>
> is it intended that any wicket:enclosure breaks if it is depending on a
> component that is not added in the constructor but in "onBeforeRender"?
>
> e.g:
>
> <wicket:enclosure child="version">
>         <tr>
>         <th>Bezeichnung:</th>
>         <td wicket:id="version">value</td>
>         </tr>
> </wicket:enclosure>
>
> with java:
> public HomePage(final PageParameters parameters) {
>                 super(parameters);
>                 add(new Label("version", getApplication().
> getFrameworkSettings().getVersion()));
>     }
>
> works while if you delay it to:
>
> @Override
>         protected void onBeforeRender() {
>                 super.onBeforeRender();
>                 add(new Label("version", getApplication().
> getFrameworkSettings().getVersion()));
>         }
>
> it breaks with:
>
> 12:00:25.172 [main] WARN  RequestCycleExtra -
> ********************************
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.666 sec
> <<< FAILURE! - in com.mycompany.TestHomePage
> homepageRendersSuccessfully(com.mycompany.TestHomePage)  Time elapsed:
> 0.589 sec  <<< ERROR!
> org.apache.wicket.WicketRuntimeException: Could not find child with id:
> version in the wicket:enclosure
>         at org.apache.wicket.markup.html.internal.Enclosure.
> checkChildComponent(Enclosure.java:295)
>
>
>
>
> Best,
>
> KB
>

Reply via email to