Калитка: автоматически перезагружать AjaxLazyLoadPanel

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

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

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

Спасибо!!


person jOki    schedule 25.08.2010    source источник


Ответы (2)


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

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

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


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

person Sean Patrick Floyd    schedule 25.08.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);
      }
 }
person jOki    schedule 26.08.2010
comment
вы должны принять свое собственное решение, иначе вопрос останется без ответа - person Sean Patrick Floyd; 01.09.2010