I have a couple of behaviors that add javascript to the header of a
document, to change attributes or add event scripts to components (using
jquery onready, but that's not the point). This all works fine. There is
just one problem: when I use such components in an ajax
request/response, it won't have the javascript added attributes anymore,
because the component gets replaced by the wicket ajax call.

I'm looking for a way to make the behaviors add the necessary javascript
to add the attributes again, when an ajax response is created. E.g. a
way to let behaviors add a script to every ajax response, or let them
add script tags after the rendering of the component. Is there a way to
do this in Wicket?

I know I could make a custom panel/component that just has an extra
script tag, but that's far to intrusive, and makes it really difficult
to make different combinations of these behaviors.

Example behavior class:

public class DatePickerBehavior extends AbstractBehavior {
    private String createOnReadyScript(String markupId) {
        return "$(document).ready(function(){\n " +
        createPickerScript(markupId) + "\n});";
    }

    private String createPickerScript(String markupId) {
        return "$('#" + markupId + "').datepicker();";
    }

    public void bind(Component component) {
        super.bind(component);
        component.add(new HeaderContributor(new IHeaderContributor() {
            public void renderHead(IHeaderResponse response) {
                
response.renderJavascript(createOnReadyScript(component.getMarkupId()),
                null);
            }
        }));
        //Is there a way to instead of contributing to the header, add
        the script to the document body after the rendering of
        //   the component itself.
        //Or a way to add a script to every ajax request?
    }
}
 

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

Reply via email to