大きなフォームに推奨する 3 つの戦略:
1* 遅延実行を使用して、UI の応答性を維持します。
2* できるだけ早くビューをプリロードします。
3* html テンプレートまたは safeHtml を使用
1)
private void setListBoxValues(final Map<String, String> theValues) {
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
clear();
for (Entry<String, String> entry : theValues.entrySet()) {
box.addItem(entry.getValue(), entry.getKey());
}
}
});
}
2)
ユーザーがフォームに移動する前にいくつかのページを通過する必要がある場合は、( new ...() を使用して) ビューを作成し、実際に表示する前にリストボックスをロードするメソッドを呼び出すことができます。一部のビューについては、ログイン時にプリロードすることもあるため、ユーザーへの表示は「即時」に近いものです。
ページ/ウィジェットが同じページに未知のバグを何度も表示する場合、私が行うもう 1 つのことは、プリロードされたビュー/ウィジェットのスタックを作成し、要求に応じてプレゼンターに渡すことです。プレゼンターはすぐにそれらを表示できます。
3)
リストボックスの内容が常に同じである場合は、SafeHtml または Html テンプレートを使用して直接 HTML を生成し、それをリストボックスに渡すことができます。ボタンのコードを生成する例を次に示します。パフォーマンスを改善するために特に使用したことはありませんが、より速くなると思います.
protected interface Templates extends SafeHtmlTemplates {
@SafeHtmlTemplates.Template("<button type=\"button\" value=\"{0}\" tabindex=\"-1\">{1}</button>")
SafeHtml button(String value, String label);
}
private static Templates templates = GWT.create(Templates.class);
public void render() {
SafeHtml rendered = templates.button("myValue", "myLabel");
// ... then inject HTML in some HTMLPanel
}