向Wicket实施javascript事件
我是ria-development的新手,并且正在使用Ajax Slider示例 。 我无法弄清楚如何使用javascript事件。 在示例中,onValueChanged事件已预先实现。 我如何实现说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 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().add("sv", js("ui.value")).build())))); } }
您给出的示例为change事件添加了一个事件处理程序。 此事件处理程序执行的操作是向ajaxBehavior
定义的ajaxBehavior
发出GET请求。 然后,该行为从GET参数中提取滑块值并调用onValueChanged
。
您可以像SliderOptions
一样添加另一个事件处理程序。 例如:
.slideEvent( wicketAjaxGet(ajaxBehavior, new MapBuilder() .add("sv", js("ui.value")).build()))));
每当用户移动滑块时,此处理程序应调用ajax行为。