Калитка: перезагрузите AjaxLazyLoadPanel автоматически - PullRequest
2 голосов
/ 25 августа 2010

У меня есть страница с формой. Используя данные из формы, я получаю информацию с BBDD и отображаю ее на панели с помощью Ajax.

Теперь я пытался использовать AjaxLazyLoadPanel, потому что некоторые запросы в BBDD тяжелые. У меня проблема после первой загрузки AjaxLazyLoadPanel, я не знаю, как перезагрузить его с новым контентом (новый поиск).

Любой совет ??

Спасибо !!

Ответы [ 2 ]

6 голосов
/ 25 августа 2010

Я не работал с AjaxLazyLoadPanel, но общий подход к периодическому обновлению компонента заключается в подключении AjaxSelfUpdatingTimerBehavior :

add(new AjaxLazyLoadPanel("myPanel"){
    // implementation here
}
.setOutputMarkupId()
.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(2))));

Или, если это не работает, в поведениик другому компоненту и позвольте AjaxRequestTarget добавить AjaxLazyLoadPanel (сначала вам может понадобиться присоединить AjaxLazyLoadPanel).


Вот несколько соответствующих ссылок о калитке и AJAX:

2 голосов
/ 26 августа 2010

Это не проблема с Ajax, речь идет об изображении (маленькое колесо, указывающее «загрузка»), которое показывает, когда AjaxLazyLoadPanel загружается впервые.

Я думаю, что нашел решение:

Добавьте AjaxLazyLoadPanel в WebMarkupContainer и в кнопку ajax, которая обновляет содержимое:

 // lazy is the WebMarkupContainer
 @Override
 protected void onSubmit(AjaxRequestTarget target, Form<?> form) {

      lazy.replace(new AjaxLazyLoadPanel("lazyLoadSearch") {
           @Override
           public Component getLazyLoadComponent(String id) {
                return new SearchPanel(id, rep, searchString, typeOfSearch);
           }
      });

      if (target != null) {
           target.addComponent(lazy);
      }
 }
...