0


私はGWTの初心者です。2 つのコレクションを含む JSON オブジェクトを要求するページのコードを書いており、これらのコレクションの 1 つを使用してFlextable.
これは私のJSONオブジェクトです:

public class Users extends JavaScriptObject {

 protected Users() {
 }

 public final native JsArray<Link> getLinks() /*-{
    return this.links;
 }-*/;

 public final native JsArray<User> getCollection() /*-{
    return this.collection;
 }-*/; 
}

特に、2 番目のコレクション ( と呼ばれるcollection) を使用してFlextable.
しかし、私の問題は、テーブルから1行を削除すると、http削除メソッドを使用してリクエストをサーバーに送信しても(サーバーがそのアイテムを正常に削除しても)、テーブルを更新しようとするとGWTが生成しないことです.サーバーへの GET リクエスト (コードに記述されていても) および Users オブジェクトは以前と同じで、削除されたアイテムも含まれます。
このメソッドを使用して、コレクションからこのアイテムを削除しようとしました:

public static native void remove(JsArray<?> arr, int index, int count) /*-{ 
                                                                              arr.splice(index, count);
                                                                    }-*/;
....
remove(users.getCollection(), index, users.getCollection().length());

そして、私はこの他のテクニックも試しました:

 users.getCollection().set(index, null);

しかし、どちらの場合も、期待した結果が得られません。テーブルを更新すると、削除されたアイテムが再び見つかります。
DOM を適切に管理していないと思います
。何か提案はありますか? 何か案が?専門家にとって解決するのは簡単な問題だと確信しています。

編集:
ユーザーはボタンをクリックしてテーブル内のデータを更新できます。このイベントのハンドラーはサーバーへの要求を実行しますが、この要求は最初のクリックでのみ送信されます。

4

2 に答える 2

0

基本的には 2 つの方法があります。1 つ目は、サーバー側でヘッダーを設定するCache Control方法no-cacheです。サーバー側でコードを変更できない場合 (たとえばレガシー アプリケーションの場合) は、リクエストに乱数を追加できます。パラメータ。リクエストには、ランダムに生成された数値である追加パラメータを持つ uri がありますhttp:\\mydomain.com\something?random=12345。2 つの異なる要求は異なる番号を持ち、2 番目の要求では、キャッシュされた最初の要求の応答は無視されます。これは賢明な方法ではありませんが、機能します。

于 2013-04-23T08:40:38.087 に答える
-1

このようなデータを取得するには、HTTP POST リクエストを使用することをお勧めします。これは、GET リクエストが (GWT、プロキシ サーバーなどによって) キャッシュされているためです。

また、アイテムを削除するためのサーバー コードが正しく機能していることを確認し、firebug または chrome コンソールでサーバーの応答を手動でチェックして、応答に削除されたレコードが含まれているかどうかを確認します。

フレックステーブルを埋めるために使用するコードを投稿してください。データを再度入力する前にコードをクリアしていますか?

編集:

リンクを参照してください。

celltable http://gwt.googleusercontent.com/samples/Showcase/Showcase.html#!CwCellTableを使用できる場合(下に表示される要素のリストを保持するため)、またはコレクション (ArrayList) を使用して FlexTable であるデータを保持できます。表示中。次に、そのコレクションを簡単に変更して、そこからフレックス テーブルを再描画できます。

于 2013-04-22T10:12:30.153 に答える