Hi , after a few try and errors , I can conclude how the problem occurs
In the ChildPanel , if my code is as follows :
<wicket:extend>
<span wicket:id="selectDeselectGroup">
</span>
blah...
</wicket:extend>
and code :
RadioGroup selectDeselectGroup = new RadioGroup("selectDeselectGroup");
add(selectDeselectGroup);
Everything goes fine , no matter the Child Panel is collapsed / expanded ,
page-reloading is OK
But , if I add something inside the CheckGroup :
<wicket:extend>
<span wicket:id="selectDeselectGroup">
<input type="radio" wicket:id="selectAll"/>select all
<input type="radio" wicket:id="deselectAll"/>clean
</span>
</wicket:extend>
and code :
RadioGroup selectDeselectGroup = new RadioGroup("selectDeselectGroup");
add(selectDeselectGroup);
Radio selectAll = new Radio("selectAll" , new Model(Boolean.FALSE));
Radio deselectAll = new Radio("deselectAll" , new Model(Boolean.FALSE));
selectDeselectGroup.add(selectAll);
selectDeselectGroup.add(deselectAll);
(Note , I haven't implement any AjaxEventBehavior("onclick") to the 2
radios)
Here comes the problem :
If the Child Panel is expanded , page reloading is OK.
But...
If the Child Panel is collapsed (folded /hidden) and do page reloading , it
will throw exception :
Root cause:
org.apache.wicket.WicketRuntimeException: The component(s) below failed to
render. A common problem is that you have added a component in code but
forgot to reference it in the markup (thus the component will never be
rendered).
1. [MarkupContainer [Component id = checkGroup, page =
destiny.wicket.astrology.HoroscopePage, path =
3:selectPlanetsPanel:checkGroup.CheckGroup, isVisible = true, isVersioned =
false]]
2. [MarkupContainer [Component id = selectDeselectGroup, page =
destiny.wicket.astrology.HoroscopePage, path =
3:selectPlanetsPanel:selectDeselectGroup.RadioGroup, isVisible = true,
isVersioned = false]]
3. [MarkupContainer [Component id = selectAll, page =
destiny.wicket.astrology.HoroscopePage, path =
3:selectPlanetsPanel:selectDeselectGroup:selectAll.Radio, isVisible = true,
isVersioned = false]]
4. [MarkupContainer [Component id = deselectAll, page =
destiny.wicket.astrology.HoroscopePage, path =
3:selectPlanetsPanel:selectDeselectGroup:deselectAll.Radio, isVisible =
true, isVersioned = false]]
at org.apache.wicket.Page.checkRendering(Page.java:1116)
at org.apache.wicket.Page.renderPage(Page.java:914)