Ah, you're right :) Here is the check I didn't consider:

if (bodyContainer == null) {
  ...
}


2007/4/29, Igor Vaynberg <[EMAIL PROTECTED]>:
> well if you look at the code, the way it works is: only do it if it hasnt
> been done already. so this code only does anything on the first attach, then
> it becomes a noop.
>
> -igor
>
>
>
>  On 4/29/07, Rüdiger Schulz <[EMAIL PROTECTED]> wrote:
> >
> > Hello Igor,
> >
> > thanks for your help, it was a very close hit :) I actually had to put
> > the code into internalOnttatch like this:
> >
> > protected void internalOnAttach() {
> > super.internalOnAttach();
> >
> > Component body=get( BodyOnLoadHandler.BODY_ID);
> > if (body!=null) {
> >      if (!(body instanceof MyHtmlBodyContainer)) {
> >           remove(BodyOnLoadHandler.BODY_ID );
> >           body=null;
> >       }
> > }
> > if (body==null) {
> >      add(new ...);
> > }
> > }
> >
> > Now I think it works as expected.
> >
> > Now that I know where to look for this - isn't it that now on every
> > attach of the page first a new HtmlBodyContainer is created only to
> > replaced instantly? Is that unnecessary component creation very
> > costly, or shouldn't I worry about this? I'd rather not like to
> > overwrite WebPage.getBodyContainer() by copying 99% of the code and
> > just change the line adding the default HtmlBodyContainer - what I do
> > seems to be enough of a hack already ;)
> >
> > greetings,
> >
> > Rüdiger
> >
> > 2007/4/29, Igor Vaynberg <[EMAIL PROTECTED]>:
> > > you can most likely move that code to page.onattach() and do
> > >
> > > Component body=get(BodyOnLoadHandler.BODY_ID);
> > > if (body!=null) {
> > >     if (!(body instanceof MyHtmlBodyContainer)) {
> > >          remove(BodyOnLoadHandler.BODY_ID );
> > >          body=null;
> > >      }
> > > }
> > > if (body==null) {
> > >     add(new ...);
> > > }
> > >
> > > -igor
> > >
> > >
> > > On 4/29/07, Rüdiger Schulz < [EMAIL PROTECTED]> wrote:
> > > >
> > > > Hello everybody,
> > > >
> > > > I just updated my application from Wicket 1.2.5 to 1.2.6. The update
> > > > broke one of my pages, which had a rather special requirement: it
> > > > needed to use my own implementation of HtmlBodyContainer. The way I
> > > > did it was like this:
> > > >
> > > > public EmailPage()
> > > > {
> > > >         remove(BodyOnLoadHandler.BODY_ID );
> > > >         add(new MyHtmlBodyContainer(BodyOnLoadHandler.BODY_ID);
> > > > }
> > > >
> > > > see also:
> > > >
> > >
> http://www.nabble.com/BodyContributor--tf2578291.html#a7187578
> > > >
> > > > With 1.2.6 this does not work anymore. The remove throws the following
> > > > Exception:
> > > >
> > > > Caused by: wicket.WicketRuntimeException: Unable to find a component
> > > > with id '_<body>' to remove
> > > >         at wicket.MarkupContainer.remove(MarkupContainer.java:479)
> > > >
> > > > Just doing the add without the remove doesn't work either:
> > > >
> > > > Caused by: java.lang.IllegalArgumentException: A
> child
> > > with id
> > > > '_<body>' already exists:
> > > > [Page class =
> de.indyphone.logokits.wicket.ComposerPage,
> > > id = 21]
> > > >         at wicket.MarkupContainer.add(MarkupContainer.java:156)
> > > >         at
> > >
> wicket.markup.html.WebPage.getBodyContainer(WebPage.java:211)
> > > >         at
> > > wicket.markup.html.WebPage.internalOnAttach
> (WebPage.java:175)
> > > >         at wicket.Component.internalAttach(Component.java:2572)
> > > >         at
> > >
> wicket.MarkupContainer.internalAttach(MarkupContainer.java:341)
> > > >
> > > > So, where's the best location to put the code for replacing the
> > > > BodyContainer? And will this then still work in 1.3?
> > > >
> > > > Thanks for your time,
> > > >
> > > > Rüdiger
> > > >
> > > >
> > >
> -------------------------------------------------------------------------
> > > > This SF.net email is sponsored by DB2 Express
> > > > Download DB2 Express C - the FREE version of DB2 express and take
> > > > control of your XML. No limits. Just data. Click to get it now.
> > > > http://sourceforge.net/powerbar/db2/
> > > > _______________________________________________
> > > > Wicket-user mailing list
> > > > Wicket-user@lists.sourceforge.net
> > > >
> https://lists.sourceforge.net/lists/listinfo/wicket-user
> > > >
> > >
> > >
> > >
> -------------------------------------------------------------------------
> > > This SF.net email is sponsored by DB2 Express
> > > Download DB2 Express C - the FREE version of DB2 express and take
> > > control of your XML. No limits. Just data. Click to get it now.
> > > http://sourceforge.net/powerbar/db2/
> > > _______________________________________________
> > > Wicket-user mailing list
> > > Wicket-user@lists.sourceforge.net
> > >
> https://lists.sourceforge.net/lists/listinfo/wicket-user
> > >
> > >
> >
> >
> -------------------------------------------------------------------------
> > This SF.net email is sponsored by DB2 Express
> > Download DB2 Express C - the FREE version of DB2 express and take
> > control of your XML. No limits. Just data. Click to get it now.
> > http://sourceforge.net/powerbar/db2/
> > _______________________________________________
> > Wicket-user mailing list
> > Wicket-user@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/wicket-user
> >
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> Wicket-user mailing list
> Wicket-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wicket-user
>
>


-- 
greetings from Berlin,

Rüdiger Schulz

www.2rue.de

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to