IndicatingAjaxButtonのonSubmitを使用してフォームを送信しているときにコンポーネントを更新およびレンダリングしようとしています。しかし、すべてのコンポーネントは1回onSubmitが完了してレンダリングされています。私のフォームがまだ提出している間にそれらをレンダリングする方法はありますか?フォームが送信している間に更新プログレスバーを表示するように。残りのコールが実行されるたびに進捗状況を表示したい。 これは私がやっている何おおよそ次のとおりです。フォームの送信中にwicketコンポーネントをレンダリングする
public class MyPage {
Form form;
int items;
WebMarkupContainer progressbar = new WebMarkupContainer("progressbar");
int progress = 0;
MyData dataItems = new MyData();
public MyPage() {
progressbar.setOutpuMarkupId(true);
items = 5;
setupForm();
}
public void setupForm() {
form = new Form("form", new CompundPropertyModel(dataItems));
form.add(new IndicatingAjaxButton("button") {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
for (int i = 0; i < items; i++) {
progress++;
progressbar.add(new AttributeModifier("style", "width: " + progress + "%;"));
//rest post call goes here
}
}
});
}
add(form);
add(progressbar);
}
//in html page
<div wicket:id="progressbar" id="progressbar" style="width: 0% ; background-color:green;"></div>
私は理解していれば、速く提出する(サーバー側のフロントエンドで受け付けた)数百ミリ秒の最大値と、サーバーのバックエンドの長いアルゴリズムについて考えますか?あなたに役立つコードを与える –
2番目の試みは、大きなファイルのアップロードです。 Wicketにはいくつかのajaxifiedソリューションがあります(公式サイトのガイド) –