Как использовать 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, в противном случае делегировать для обычного запроса.