0

私は GWT 開発の比較的初心者です。現在、いくつかのデータ (〜 20 項目) を含むほぼ 200 の GWT ListBoxes をロードしている GWT Web アプリを継承しました。このデータの読み込みは非常に遅いです。すべての ListBoxes を 1 つのデータ オブジェクトに "バインド" して、データをロードする方法はありますか? Editor フレームワークは役に立ちますか? UI を再設計したくないのですが、必要に応じて再設計する必要があるかもしれません。

ありがとうございました。

4

1 に答える 1

0

大きなフォームに推奨する 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
}
于 2013-08-12T07:49:46.737 に答える