2010-08-25 66 views
2

我有一個表單的頁面。使用表單中的數據,我從BBDD獲取信息,並使用Ajax顯示在面板中。Wicket:自動重新加載AjaxLazyLoadPanel

現在我試圖使用AjaxLazyLoadPanel,因爲BBDD中的一些查詢很重。我遇到的問題是在第一次加載AjaxLazyLoadPanel之後,我不知道如何用新內容重新加載(新搜索)。

有什麼建議?

謝謝!

回答

6

我還沒有AjaxLazyLoadPanel工作,但通用的辦法定期更新組件安裝一個AjaxSelfUpdatingTimerBehavior

add(new AjaxLazyLoadPanel("myPanel"){ 
    // implementation here 
} 
.setOutputMarkupId() 
.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(2)))); 

或者,如果還是不行,在行爲不同的組件,讓AjaxRequestTarget add the AjaxLazyLoadPanel(您可能必須先附加AjaxLazyLoadPanel)。


以下是有關檢票口和AJAX的幾個相關鏈接:

2

這不是爲p與Ajax一起,它是關於圖像(指示「加載」的小輪),它顯示了第一次加載AjaxLazyLoadPanel。

我想我已經找到了解決辦法:

添加AjaxLazyLoadPanel在WebMarkupContainer,並在阿賈克斯按鈕刷新內容:

// lazy is the WebMarkupContainer 
@Override 
protected void onSubmit(AjaxRequestTarget target, Form<?> form) { 

     lazy.replace(new AjaxLazyLoadPanel("lazyLoadSearch") { 
      @Override 
      public Component getLazyLoadComponent(String id) { 
       return new SearchPanel(id, rep, searchString, typeOfSearch); 
      } 
     }); 

     if (target != null) { 
      target.addComponent(lazy); 
     } 
} 
+1

你應該接受自己的解決方案或問題將繼續顯示爲未答覆 – 2010-09-01 13:52:39