this SO questionに基づいて、Wicket が後続の AJAX リクエストをキューに入れることを理解しました。現在、私のページはいくつかの AJAX リクエストでいっぱいです。時間のかかる操作を生成するリクエストをもう 1 つ追加したいと思います。
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)
}
この Ajax リクエストが発生すると、実行が完了するまでに最大 1 分かかる場合があります。ここでの問題は、私が持っているsomeService.doSomeLengthyOperation()
実行されることです。つまり、キューに入れられます。前述したように、Wicket は後続の AJAX リクエストをキューに入れます。n times the number of rows
n times two-minutes
何が起こるかというとnumber-of-rows * minutes-it-take-to-finish-the-operation
、ページをロードしたり、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()
}
}
自分のサービスを公開する Web サービスを作成したり、独自の AJAX 呼び出しを作成したりする必要はありません。私のオプションは何ですか?(Wicket 1.5 / Pax-Wicket を使用)