Как использовать AjaxLazyLoadPanel в Wicket

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