WicketでAjaxLazyLoadPanelを使用する方法

WicketでAjaxLazyLoadPanelを使用する方法

AjaxLazyLoadPanelの定義:

別のパネルを遅延ロードできるパネル。 これは、作成が非常に重いパネル/コンポーネントがあり、最初にユーザーにページを表示し、準備ができたらパネルを置き換える場合に使用できます。

この機能は本当に印象的です。 ここでは、通常のパネルをこの強力なAjaxLazyLoadPanelに変換する方法を示します。

オリジナルパネル

通常の改札パネル。


add(new PricePanel("price"));

遅延ロードパネル

WicketAjaxLazyLoadPanelに変換します。


add(new AjaxLazyLoadPanel("price")
{
  @Override
  public Component getLazyLoadComponent(String id)
  {
       return PricePanel(id);
  }
});

完了、PricePanelには遅延読み込み効果があります。 Nice

注意してください。

このAjaxLazyLoadPanelの欠点の1つは、フォールバックバージョンが含まれていないことです。 ブラウザのJavaScriptが無効になっている場合、遅延画像は永遠にロードされ続けます。

ここでそれをいじるトリックがあります。

1. Wicketのアプリケーションクラスに次のコードを配置します

protected void init() {
        getRequestCycleSettings().setGatherExtendedBrowserInfo(true);
}

2. それをチェック

WebClientInfo clientInfo = (WebClientInfo)WebRequestCycle.get().getClientInfo();
if(clientInfo.getProperties().isJavaEnabled()){
add(new AjaxLazyLoadPanel("price")
{
  @Override
  public Component getLazyLoadComponent(String id)
  {
       return PricePanel("price");
  }
});
}else{
  add(new PricePanel("price"));
}

上記の関数は、ブラウザーがJavaScriptをサポートしている場合はAjaxLazyLoadPanel関数を実行し、それ以外の場合は通常のリクエストに委任します。