Class JQueryAjaxBehavior

  • All Implemented Interfaces:
    Serializable, IComponentAwareEventSink, IRequestListener, IComponentAwareHeaderContributor, IClusterable
    Direct Known Subclasses:
    JQueryAjaxPostBehavior

    public abstract class JQueryAjaxBehavior
    extends AbstractDefaultAjaxBehavior
    Base class for implementing AJAX GET calls to a IJQueryAjaxAware source, which is usually a JQueryBehavior

    Example
     interface IMyJQueryListener
     {
            void onMyEvent(AjaxRequestTarget target);
     }
     
     public class MyJQueryLabel extends Label implements IJQueryWidget, IMyJQueryListener
     {
            private static final long serialVersionUID = 1L;
     
            public MyJQueryLabel(String id)
            {
                    super(id);
            }
     
            // Events //
            protected void onInitialize()
            {
                    super.onInitialize();
     
                    this.add(JQueryWidget.newWidgetBehavior(this));
            }
     
            public void onMyEvent(AjaxRequestTarget target)
            {
                    // do something here
            }
     
            public JQueryBehavior newWidgetBehavior(String selector)
            {
                    return new MyJQueryBehavior(selector, "jquerymethod") {
     
                            private static final long serialVersionUID = 1L;
     
                            public void onMyEvent(AjaxRequestTarget target)
                            {
                                    MyJQueryLabel.this.onMyEvent(target);
                            }
                    };
            }
     
            static abstract class MyJQueryBehavior extends JQueryBehavior implements IJQueryAjaxAware, IMyJQueryListener
            {
                    private static final long serialVersionUID = 1L;
                    private JQueryAjaxBehavior onMyEventAjaxBehavior;
     
                    public MyJQueryBehavior(String selector, String method)
                    {
                            super(selector, method);
                    }
     
                    public void bind(Component component)
                    {
                            super.bind(component);
     
                            component.add(this.onMyEventAjaxBehavior = this.newJQueryAjaxBehavior(this));
                    }
     
                    // Events //
                    public void onConfigure(Component component)
                    {
                            this.setOption("jqueryevent", this.onMyEventAjaxBehavior.getCallbackFunction());
     
                            super.onConfigure(component);
                    }
     
                    public void onAjax(AjaxRequestTarget target, JQueryEvent event)
                    {
                            if (event instanceof MyEvent)
                            {
                                    this.onMyEvent(target);
                            }
                    }
     
                    // Factory //
                    protected JQueryAjaxBehavior newJQueryAjaxBehavior(IJQueryAjaxAware source)
                    {
                            return new JQueryAjaxBehavior(source) {
     
                                    private static final long serialVersionUID = 1L;
     
                                    protected CallbackParameter[] getCallbackParameters()
                                    {
                                            return new CallbackParameter[] { CallbackParameter.context("event"), CallbackParameter.context("ui") };
                                    }
     
                                    protected JQueryEvent newEvent()
                                    {
                                            return new MyEvent();
                                    }
                            };
                    }
     
                    // Event objects //
                    protected static class MyEvent extends JQueryEvent
                    {
                    }
            }
     }
     
    Author:
    Sebastien Briquet - sebfz1
    See Also:
    Serialized Form