1

AsyncCallbackGWT-RPC サービスに接続してデータを取得する呼び出しがあります。そのデータを、クエリの結果を格納するための静的メソッドを持つクラスに格納しようとしています。ただし、静的データ メンバーにデータが入力されていないことに気付きました。AsyncCallback 呼び出しに SC.logWarn(...) を入れて AsyncCallback 呼び出しを「遅く」すると、静的データ メンバーが適切に読み込まれます。

final AsyncCallback<Set<MyData>> dataCallback =
         new AsyncCallback<Set<MyData>>() 
         {
            @Override
            public void onSuccess(Set<MyData> aDataType)
            {
               for (MyData data : aDataType)
               {
                  String someData = aDataType.getData();

                  Record rec = new Record();
                  rec.setAttribute("data", someData);
                  getDataSource().addData(rec);                  
               }                   
               LocalUiCache.setLocalCache(new ResultSet(getDataSource()));
            }
         };
      MyDataService.RPC.getInstance().getData(dataCallback);

...

public class LocalUiCache
{
   private static ResultSet localCache;

   /**
    * @return the localCache
    */
   public static ResultSet getLocalCache()
   {
      return localCache;
   }

   /**
    * @param aLocalCache the localCache to set
    */
   public static void setLocalCache(ResultSet aLocalCache)
   {
      localCache = aLocalCache;
   }
}
4

1 に答える 1

1

これについてはよくわかりませんが、SmartGWT は変更をすばやくリロードしないと思います。dataSource キャッシュを微調整するか、明示的に無効化メソッドを呼び出すことができます。

他の提案は確かに機能しますが、それは「汚いハック」です。非同期コールバックのスケジュールされた呼び出しを入れることができます:

new Timer() {    
  public void run() {
    LocalUiCache.setLocalCache(new ResultSet(getDataSource()));
  }
}.schedule(50);
于 2013-03-28T13:22:38.537 に答える