一尘不染

将JavaScript事件实施到Wicket

ajax

我是ria开发的新手,正在使用Ajax
Slider示例
。我不知道如何使用javascript事件。在此示例中,onValueChanged-
event是预先实现的。如何实现说onchange-或onSlider-event?

所有帮助,不胜感激!

public abstract class AjaxSlider extends WebMarkupContainer {

    private static final long serialVersionUID = 1L;

    public AjaxSlider(String id) {
            super(id);
            super.setOutputMarkupId(true);
    }
    public JQUIComponentBehaivor<SliderOptions> getSlideBehaviors() {
        List behaviors = getBehaviors();
        for(Object behavior : behaviors){
            if(behavior instanceof SliderBehavior)
                        return (SliderBehavior) behavior;
        }
        return null;
    }


    public abstract void onValueChanged(AjaxRequestTarget target,
                    int newValue);

    @Override
    protected void onInitialize() {
            super.onInitialize();
            AbstractDefaultAjaxBehavior ajaxBehavior =
                new AbstractDefaultAjaxBehavior() {
                    private static final long serialVersionUID = 1L;

                    @Override
                    protected void respond(AjaxRequestTarget target) {
                            String sliderValue = RequestCycle.get().getRequest()
                                            .getParameter("sv");
                            if (Utils.isNotBlank(sliderValue)) {
                                    onValueChanged(target, Integer.valueOf(sliderValue));
                            }
                    }
            };
            super.add(ajaxBehavior);
            super.add(new SliderBehavior(new SliderOptions()
                            .changeEvent(wicketAjaxGet(
                                            ajaxBehavior,
                                            new MapBuilder<String, Object>().add("sv",
                                                            js("ui.value")).build()))));
    }

}

阅读 229

收藏
2020-07-26

共1个答案

一尘不染

您提供的示例为change事件添加了一个事件处理程序。此事件处理程序的作用是向上述ajaxBehavior定义发出GET请求。然后,该行为从GET参数中提取滑块值并调用onValueChanged

您可以向添加新的事件处理程序SliderOptions。例如:

.slideEvent(
    wicketAjaxGet(ajaxBehavior,
                  new MapBuilder<String, Object>()
                  .add("sv",  js("ui.value")).build()))));

每当用户移动滑块时,此处理程序都应调用ajax行为。

2020-07-26