我有一个AsyncCallback
调用,它与我的GWT-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;
}
}
答案 0 :(得分:1)
我不确定这一点,但我认为SmartGWT不会快速重新加载您的更改。 您可以尝试调整dataSource缓存或显式调用invalidate方法。
其他建议一定会奏效,但这是“肮脏的黑客”。您可以输入异步回拨预定呼叫:
new Timer() {
public void run() {
LocalUiCache.setLocalCache(new ResultSet(getDataSource()));
}
}.schedule(50);