Wicket: презаредете 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).


Ето няколко подходящи връзки за wicket и 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