2013-05-10 58 views
3

我被要求升級我們現有的應用程序之一,並且在解決如何更新我們的某些類時遇到了一些問題。Wicket 1.4 => 6.7替換AjaxButton:getAjaxCallDecorator

我們有自己的CustomAjaxButtonextends AjaxButton,其中getAjaxCallDecorator被覆蓋,所以我們可以返回自定義decorateOnSuccessScript

我找到了https://cwiki.apache.org/confluence/display/WICKET/Wicket+Ajax#WicketAjax-o.a.w.ajax.IAjaxCallDecoratorisreplacedwitho.a.w.ajax.attributes.IAjaxCallListener。頁面確實解釋了原因,但由於getAjaxCallDecorator已被刪除,所以我不確定如何將其與新的AjaxButton實施結合使用。老版

代碼片段:

@Override 
    protected IAjaxCallDecorator getAjaxCallDecorator() { 
     return new IAjaxCallDecorator() 
     { 
     private static final long serialVersionUID = 6L; 
... 
     public CharSequence decorateScript(CharSequence script) 
     { 
      return script + " document.getElementById('inputBlocker').style.display='none';"; 
     } 
     }; 
    } 

我不得不承認,我一個很新的檢票,我的經驗更豐富的同事是在度假。 任何幫助\建議非常感謝。

回答

6

試試這個辦法:

add(new AjaxLink("btn"){ 

    @Override 
    protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { 
     super.updateAjaxAttributes(attributes); 
     attributes.getAjaxCallListeners().add(new AjaxCallListener(){ 

      @Override 
      public CharSequence getSuccessHandler(Component component) { 
       return " document.getElementById('inputBlocker').style.display='none';"; 
      } 

     }); 
    } 

}); 

在AjaxCallListener可以覆蓋你想要的任何處理。如果你想要,你可以改變腳本執行到完整的處理程序

+1

如果有人得到這個相同,請閱讀:http://wicketinaction.com/2012/07/wicket-6-javascript-improvements/ – 2014-04-23 11:21:18