I dived into the wicket core code and I ended up in WebComponent.renderHead(). Since I noticed that getBodyOnLoad() was only called for FormComponents and WebMarkupContainers I expected a difference in renderHead() for WebComponent and WebMarkupContainer....... and I found it.

Webcomponent.renderHead()

   /**
    * THIS IS NOT PART OF WICKETS PUBLIC API. DO NOT CALL IT YOURSELF
    * Print to the web response what ever the component wants
    * to contribute to the head section. Does nothing by default.
    *
    * @param container The HtmlHeaderContainer
* @see wicket.markup.html.IHeaderContributor#renderHead(wicket.markup.html.HtmlHeaderContainer)
    */
   public void renderHead(final HtmlHeaderContainer container)
   {
       AjaxHandler[] handlers = getAjaxHandlers();
       if (handlers != null)
       {
           for (int i = 0; i < handlers.length; i++)
           {
               handlers[i].renderHead(container);
           }
       }
   }

and WebMarkupContainer.renderHead():
public void renderHead(final HtmlHeaderContainer container)
   {
....
.....
       // get head and body contributions in one loop
       AjaxHandler[] handlers = getAjaxHandlers();
       if (handlers != null)
       {
           for (int i = 0; i < handlers.length; i++)
           {
               ((IHeaderContributor)handlers[i]).renderHead(container);

String stmt = ((IBodyOnloadContributor)handlers[i]).getBodyOnload();
               if (stmt != null)
               {
                   ((WebPage)getPage()).appendToBodyOnLoad(stmt);
               }
} }
   }

I believe that getBodyOnload() is not called in WebComponent. And thus any bodyonload contributions made in AjaxHandlers bound to WebComponents are ignored. Is this a bug? If so, it must be easy to fix.

Marco

That should work. Might be a bug. Could you pls try to step into it?

Eelco

On 11/4/05, Marco van de Haar <[EMAIL PROTECTED]> wrote:
I encountered somewhat unexpected behavior when I tried using
getBodyOnloadContribution().
When adding custom Ajaxhandlers to components I noticed that the
getBodyOnloadContribution() is not called when I added the handler to an
Image or a Label. It was however called upon loading the page when I
added my handler to a WebMarkupContainer.

Is this method meant to hehave this way? If so, I did not find it in the
documentation. I think it is logical that the method is also called for
Components like Label and Image. I am not really familliar with
AjaxHandler's internal code however.

Marco




-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user



-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user




-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to