2011-03-06 19 views
2

我是ria開發人員,並且與Ajax Slider example一起工作。我無法弄清楚如何使用javascript事件。在這個例子中,onValueChanged事件被預先實現。我如何實現onchange或onSlider事件?將JavaScript事件實現到Wicket

所有幫助非常感謝!

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

} 

回答

4

您給出的示例爲change事件添加了一個事件處理程序。該事件處理程序所做的是向上面定義的ajaxBehavior發出GET請求。該行爲然後從GET參數中提取滑塊值並調用onValueChanged

您可以像這樣添加另一個事件處理程序到SliderOptions。例如:

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

該處理程序應在用戶移動滑塊時調用ajax行爲。

+0

+1爲您的答案,但請下次縮進您的代碼。順便說一句,對於有單個條目的地圖,您可能想要使用[Collections.singletonMap(kay,value)](http://download.oracle.com/javase/6/docs/api/java/util/Collections.html #singletonMap%28K%2C%20V%29)。 – 2011-03-06 19:45:48

+0

哦,我剛剛意識到MapBuilder代碼是OP自己的代碼。沒關係。 – 2011-03-06 19:49:09

+0

謝謝!好的,現在我該如何區分這些事件?現在,我將這兩個事件都收到響應方法中。 – user594883 2011-03-07 18:19:35