No the after render of a component is called after the page render to
clean up stuff.
Just as onBeforeRender is called before the page is starting to render

On 5/17/08, Eyal Golan <[EMAIL PROTECTED]> wrote:
> Isn't this is what I did?
> Anyway, here's an example of what I get.
> First: the Java code:
> public final class TestButtonPage extends WebPage {
>     public TestButtonPage() {
>         add(new ExtendingButton("extendingButton"));
>         Button other = new Button("behavioralButton");
>         other.add(new MyBehavior());
>         add(other);
>     }
>
>     class ExtendingButton extends Button {
>         private static final long serialVersionUID = 1L;
>
>         public ExtendingButton(String id) {
>             super(id);
>         }
>
>         @Override
>         protected void onAfterRender() {
>
> getResponse().write("<span>ExtendingButton.onAfterRender()</span>");
>             super.onAfterRender();
>         }
>     }
>
>     class MyBehavior extends AbstractBehavior {
>         private static final long serialVersionUID = 1L;
>
>         @Override
>         public void onRendered(Component component) {
>
> component.getResponse().write("<span>AbstractBehavior.onRendered(...)</span>");
>         }
>     }
> }
>
> This is the markup:
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
>      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
> <html xmlns="http://www.w3.org/1999/xhtml";
>     xmlns:wicket="http://wicket.apache.org/"; xml:lang="en" lang="en">
> <head>
> <title>Button Test</title>
> </head>
> <body>
> <button wicket:id="extendingButton">Extending Button</button><br/>
> <button wicket:id="behavioralButton">Behavioral Button</button><br/>
> </body>
> <br />
> <span>This is just before the html closing tag</span>
> <br />
> </html>
>
> And this is the output (taken from view source in my FF browser):
>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
>      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
> <html xmlns="http://www.w3.org/1999/xhtml";
>       xmlns:wicket="http://wicket.apache.org/"; xml:lang="en" lang="en">
> <head>
> <title>Button Test</title>
> </head>
> <body>
> <button id="extendingButton1" name="extendingButton"
> wicket:id="extendingButton">Extending Button</button><br/>
> <button id="behavioralButton2" name="behavioralButton"
> wicket:id="behavioralButton">Behavioral
> Button</button><span>AbstractBehavior.onRendered(...)</span><br/>
> </body>
> <br />
> <span>This is just before the html closing tag</span>
> <br />
>
> </html>
>
> <span>ExtendingButton.onAfterRender()</span>
>
> As you can see, the behavior put the <span> tag just after the button, but
> the "extendingButton" put the <span> tag after the closing tag of the html.
>
> Is this the correct behavior?
>
> thanks
>
> On Thu, May 15, 2008 at 4:38 PM, Johan Compagner <[EMAIL PROTECTED]>
> wrote:
>
>> get the components markupid from the component itself.
>>
>> johan
>>
>>
>> On Thu, May 15, 2008 at 3:03 PM, Eyal Golan <[EMAIL PROTECTED]> wrote:
>>
>> > thanks,
>> > that's exactly what I did.
>> > I add to my component (button) an AbstarctBehavior, which is an
>> > IHeaderContributor.
>> > I even override renderHead:
>> >    @Override
>> >    public void renderHead(IHeaderResponse response) {
>> >
>> > response.renderCSSReference("/eurekify/style/button/EurekifyButton.css");
>> >
>> >
>> >
>> response.renderJavascriptReference("/eurekify/style/button/EurekifyButton.js");
>> > //        response.renderJavascriptReference(new
>> > JavascriptResourceReference(
>> > //                EurekifyButtonBehavior.class, "resizeScript.js"));
>> >    }
>> >
>> > The script I am adding to each button comes from a utility class:
>> >    static String getResizeScript(String markupId) {
>> >        StringBuilder strBuilder = new StringBuilder();
>> >        strBuilder.append("<script language=\"javascript\">");
>> >        strBuilder.append("document.getElementById('btnObj_");
>> >        strBuilder.append(markupId);
>> >        strBuilder.append("').style.width = calcBtnSize('");
>> >        strBuilder.append(markupId).append("')");
>> >        strBuilder.append("</script>");
>> >        return strBuilder.toString();
>> >    }
>> >
>> > This is the script that I mentioned in my first question.
>> >
>> > Again:
>> > If I call this script in the Button class, in the onAfterRender()
>> > method,
>> > it
>> > is added to the end of the output HTML.
>> > If I call this in the behavior, in the onRendered(Component component),
>> it
>> > is added just after the </button>.
>> >
>> > I did something like this in the onload script:
>> > window.onload = function(id) {
>> >  document.getElementById('btnObj_'+id).style.width =  function(id)
>> > {calcBtnSize(id)};
>> > }
>> >
>> > firebug says that it can't find document.getElementById('btnObj_'+id)
>> > ...
>> > On Thu, May 15, 2008 at 3:50 PM, Johan Compagner <[EMAIL PROTECTED]>
>> > wrote:
>> >
>> > > you can also do it on component
>> > > public void renderHead(final HtmlHeaderContainer container)
>> > >
>> > > or let the component implement IHeaderContributor
>> > >
>> > > i guess that renderHead(final HtmlHeaderContainer container) shouldnt
>> be
>> > > public but more protected or final..
>> > >
>> > > johan
>> > >
>> > >
>> > > On Thu, May 15, 2008 at 2:44 PM, Eyal Golan <[EMAIL PROTECTED]>
>> wrote:
>> > >
>> > > > ok. thank, I'll try it (though I have never written JavaScript till
>> > > > a
>> > few
>> > > > days ago...)
>> > > > BTW, why is the difference between the overriding method and the
>> > behavior
>> > > > method?
>> > > >
>> > > > On Thu, May 15, 2008 at 2:52 PM, Johan Compagner <
>> [EMAIL PROTECTED]
>> > >
>> > > > wrote:
>> > > >
>> > > > > use a behavior that adds an onDocumentLoad/Ready script to the
>> > browser
>> > > > >
>> > > > > On Thu, May 15, 2008 at 12:35 PM, Eyal Golan <[EMAIL PROTECTED]>
>> > > wrote:
>> > > > >
>> > > > > > Hello,
>> > > > > > I have a MyButton that extends Button.
>> > > > > > I have a JavaScript that I need to ad to the output markup after
>> > the
>> > > > > > button's markup.
>> > > > > > I'm trying to do this with two differnet options:
>> > > > > > Either I Override onAfterRender in MyButton:
>> > > > > >    @Override
>> > > > > >    protected void onAfterRender() {
>> > > > > >        if (isVisible()) {
>> > > > > >
>> > >  getResponse().write(Consts.getResizeScript(getMarkupId()));
>> > > > > >        }
>> > > > > >        super.onAfterRender();
>> > > > > >    }
>> > > > > >
>> > > > > > Or, I add to the button a behavior and write this:
>> > > > > >    @Override
>> > > > > >    public void onRendered(Component component) {
>> > > > > >        if (component.isVisible()) {
>> > > > > >
>> > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> component.getResponse().write(Consts.getResizeScript(component.getMarkupId()));
>> > > > > >        }
>> > > > > >
>> > > > > >    }
>> > > > > >
>> > > > > > Now, the situation is like this:
>> > > > > > Using the first option (override in the component), the script
>> > > > > > is
>> > > added
>> > > > > to
>> > > > > > the end of the html. Just after the </html>
>> > > > > > Using the second option (the behavior), the script is added just
>> > > after
>> > > > > the
>> > > > > > close tag of the button </button>.
>> > > > > >
>> > > > > > Using FF, all is ok, but in IE7, there's a problem in
>> > > > > > calculating
>> > the
>> > > > > size
>> > > > > > and the button is not shown correctly.
>> > > > > >
>> > > > > > What causes the differences? and how can I manipulate the
>> behavior
>> > to
>> > > > > work
>> > > > > > like option 1 ?
>> > > > > >
>> > > > > > Thanks very much...
>> > > > > >
>> > > > > > --
>> > > > > > Eyal Golan
>> > > > > > [EMAIL PROTECTED]
>> > > > > >
>> > > > > > Visit: http://jvdrums.sourceforge.net/
>> > > > > >
>> > > > >
>> > > >
>> > > >
>> > > >
>> > > > --
>> > > > Eyal Golan
>> > > > [EMAIL PROTECTED]
>> > > >
>> > > > Visit: http://jvdrums.sourceforge.net/
>> > > >
>> > >
>> >
>> >
>> >
>> > --
>> > Eyal Golan
>> > [EMAIL PROTECTED]
>> >
>> > Visit: http://jvdrums.sourceforge.net/
>> >
>>
>
>
>
> --
> Eyal Golan
> [EMAIL PROTECTED]
>
> Visit: http://jvdrums.sourceforge.net/
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to