Реализация событий JavaScript в Wicket - PullRequest
2 голосов
/ 06 марта 2011

Я новичок в ria-development и работаю с примером Ajax Slider . Я не могу понять, как работать с событиями JavaScript. Здесь, в примере, событие onValueChanged предварительно реализовано. Как реализовать событие onchange- или onSlider?

Вся помощь очень ценится!

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()))));
    }

}

1 Ответ

4 голосов
/ 06 марта 2011

В приведенном вами примере добавляется обработчик события change. Этот обработчик событий выполняет запрос GET для ajaxBehavior, определенного выше. Затем поведение извлекает значение ползунка из параметров GET и вызывает onValueChanged.

Вы можете добавить другой обработчик событий, такой же, как этот, к SliderOptions. Например:

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

Этот обработчик должен вызывать поведение ajax каждый раз, когда пользователь перемещает ползунок.

...