Как использовать AjaxLazyLoadPanel в Wicket
Определение AjaxLazyLoadPanel:
Панель, где вы можете лениво загрузить другую панель. Это может быть использовано, если у вас есть панель / компонент, которая довольно тяжела в создании, и вы сначала хотите показать пользователю страницу и заменить панель, когда она будет готова.
Эта функция действительно впечатляет. Здесь мы покажем вам, как преобразовать обычную панель в этот мощныйAjaxLazyLoadPanel
.
Оригинальная панель
Обычная калитка.
add(new PricePanel("price"));
Ленивая панель загрузки
Преобразовать в WicketAjaxLazyLoadPanel
.
add(new AjaxLazyLoadPanel("price") { @Override public Component getLazyLoadComponent(String id) { return PricePanel(id); } });
Готово, теперь PricePanel имеет эффект ленивой загрузки. Nice
Осторожно!
Одним из недостатков этогоAjaxLazyLoadPanel является то, что он не содержит резервной версии. Если 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")); }
Выше функция будет запускать функцию AjaxLazyLoadPanel, если браузер поддерживает JavaScript, в противном случае делегировать для обычного запроса.