2011-03-06 1 views
2

저는 ria-development를 처음 사용하고 Ajax Slider example으로 작업하고 있습니다. 자바 스크립트 이벤트로 작업하는 방법을 알 수 없습니다. 여기 예제에서는 onValueChanged 이벤트가 미리 구현됩니다. onchange 또는 onSlider 이벤트를 어떻게 구현합니까?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

예제는 변경 이벤트에 대한 이벤트 처리기를 추가합니다. 이 이벤트 핸들러가 수행하는 작업은 위에 정의 된 ajaxBehavior에 대한 GET 요청을 실행하는 것입니다. 그런 다음 동작은 GET 매개 변수에서 슬라이더 값을 추출하고 onValueChanged을 호출합니다.

다음과 같이 다른 이벤트 처리기를 SliderOptions에 추가 할 수 있습니다. 예 :

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

이 처리기는 사용자가 슬라이더를 움직일 때마다 아약스 동작을 호출해야합니다.

+0

+1 답변을 원하지만 다음 번에 코드를 들여 씁니다. BTW, 단일 항목이있는지도의 경우 [Collections.singletonMap (kay, value)] (http://download.oracle.com/javase/6/docs/api/java/util/Collections.html)을 사용할 수 있습니다. # 싱글 톤 맵 % 28K % 2C % 20V % 29). –

+0

오, 방금 MapBuilder 코드가 OP 자체임을 깨달았습니다. 신경 쓰지 마. –

+0

감사! 좋아, 이제 이벤트를 어떻게 분리합니까? 이제는 두 가지 이벤트를 모두 respond-method로 가져 왔습니다. – user594883