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関数を実行し、それ以外の場合は通常のリクエストに委任します。