Wicket wywołujący długą operację i aktualizujący poprzez ajax
Oparte na tymTak pytanieDoszedłem do zrozumienia, że Wicket kolejkuje kolejne żądania AJAX. Teraz moja strona jest obsługiwana przez kilka żądań AJAX i chciałbym dodać jeszcze jedną, która wywołuje długą operację.
public void populateItem(final Item item) {
final MyObject object = (MyObject) item.getModelObject();
// ... a couple of fields
Label statusLabel = new Label("status", new AbstractReadOnlyModel() {
@Override
public Object getObject() {
return someService.doSomeLengthyOperation();
}
});
statusLabel.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(5)));
item.add(statusLabel)
}
Gdy ten Ajax zażąda pożaru, ukończenie wykonywania może potrwać do jednej minuty. Problem polega na tymsomeService.doSomeLengthyOperation()
zostanie wykonanyn times the number of rows
co mam, co oznacza, że będę w kolejcen times two-minutes
. Teraz, jak już wspomniałem, kolejka Wicket kolejkuje kolejne żądania AJAX.
To, co się dzieje, zabiera mnienumber-of-rows * minutes-it-take-to-finish-the-operation
załadować stronę lub zrobić inne rzeczy, które wymagają AJAX
new AjaxButton("ajax-button"){
@Override
protected void onSubmit(AjaxRequestTarget target, Form form) {
//.. this won't be executed until all the statusLabels have finished invoking getObject()
}
}
Chciałbym uniknąć tworzenia usługi internetowej ujawniającej moją usługę i zmuszonej do pisania własnych połączeń AJAX. Jakie mam opcje? (Korzystanie z Wicket 1.5 / Pax-Wicket)