我在GWT中遇到RPC调用问题。 以下是示例代码段:
我的UI中有四列,其中effdate和enddate作为列标题。 值未按顺序显示。第一列值显示在第3列中。 大部分时间订单都会发生变化。随机显示。
我猜每个计数的RPC调用服务器端方法都会延迟。 我通过调试服务器端方法发现,我通过第一个循环的effdate和结束日期有时会执行第二个或第三个。它正在改变。
任何人都可以帮助我。我需要在代码中进行哪些更改才能获得在UI中显示的正确值。 对此有何想法?
count=4;
List finalList = new arrayList();
for(i=0;i<count;count++)
{
effdate= list.get(countincr);
enddate= list.get(countincr+1);
//call to server side method to fetch values from DB by passing effdate and end date as parameter.
grp.ratecalc(startdate,enddate,new AsyncCallback<List<grVo>>()
{
public void onfailure(throwable caught)
{
sys.out.print("failure");
}
public void onsuccess(List<grVo> result)
{
List grpList= new GrpVO();
rate = result.get(0).getrate();
rate1 = result.get(0).getrate1();
grpList.setrate();
grpList.setrate1();
setting values in bean for the remaining values in the result.
finalList.add(grpList);
if(finalList.size()== count)
{
//calling a method to populate the values
methoddisplay(finalList);
}
}
}
);
countincr+=2;
} //end of for loop`
答案 0 :(得分:0)
您可以使用地图代替finallist
来跟踪请求和响应
我对你的代码做了一些修改。(它不完整.plz做了必要的修改)。
int count=4;
Map<Integer,Object> map = new HashMap<Integer, Object>();
for(int i=0;i<count;count++)
{ final int index=i;
effdate= list.get(countincr);
enddate= list.get(countincr+1);
grp.ratecalc(startdate,enddate,new AsyncCallback<List<grVo>>()
{
public void onfailure(throwable caught) {
sys.out.print("failure");
}
public void onsuccess(List<grVo> result){
List grpList= new GrpVO();
rate = result.get(0).getrate();
rate1 = result.get(0).getrate1();
grpList.setrate();
grpList.setrate1();
map.put(index, grpList);
//check all items are put on the map and populate values.
}
}
);
countincr+=2;
}
此处index
用于识别请求和响应
所有响应GrpVO对象及其索引都被放入地图中
最后,您必须从地图生成最终列表
希望这有效。