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