E.g. if you call IHeaderResponse#renderJavascript during ajax request
it should be evaluated before component is rendered.

-Matej

On Tue, Jul 22, 2008 at 2:09 PM, Matej Knopp <[EMAIL PROTECTED]> wrote:
> Why can't you just render the javascript in renderHead?
>
> -Matej
>
> On Tue, Jul 22, 2008 at 1:28 PM, Martijn Dashorst
> <[EMAIL PROTECTED]> wrote:
>> the usecase: in onbeforerender we want to add some prepended
>> javascript to the ajaxrequesttarget, sort of like:
>>
>> public class HomePage extends WebPage {
>>        private static final long serialVersionUID = 1L;
>>        private int teller = 0;
>>        public int getTeller() { return teller++; }
>>
>>        public HomePage(final PageParameters parameters) {
>>                add(new Label("message",
>>                                new PropertyModel(this, "teller")) {
>>
>>                        protected void onBeforeRender() {
>>                                super.onBeforeRender();
>>                                if (getRequestCycle().getRequestTarget() 
>> instanceof AjaxRequestTarget) {
>>                                        ((AjaxRequestTarget) 
>> getRequestCycle().getRequestTarget())
>>                                                        
>> .prependJavascript("alert('foo');");
>>                                }
>>                        }
>>                }.setOutputMarkupId(true));
>>
>>                add(new AjaxLink("foo") {
>>                        public void onClick(AjaxRequestTarget target) {
>>                                
>> target.addComponent(HomePage.this.get("message"));
>>                        }
>>                });
>>        }
>> }
>>
>> But this obviously doesn't work, since onbeforerender is called after
>> the prepended javascripts are added to the ajax request target. There
>> are some ways to solve this conundrum:
>>
>> 1. do the before render cycle before prepend javascripts, prepend
>> javascript, render, append javascript
>> 2. render to temporary string, prepend javascript, append javascript,
>> concatenate in correct order
>> 3. adjust wicket-ajax.js / communication protocal to 'type' the
>> various elements, and let wicket-ajax first call prepend, replace
>> component, append javascript.
>>
>> Any other ideas?
>>
>> Martijn
>>
>

Reply via email to