读书人

关于Flex返回数据类型的判断,该如何处

发布时间: 2012-03-29 12:53:12 作者: rapoo

关于Flex返回数据类型的判断
上代码

DAO实现类

//查询独立的数据(一个VO对象)
public Product getProductByName(String name) {

Product p = new Product();
if(name.equals("product_2")){
p.setId(new String("3200002"));
p.setName("product_2");


}
return p;
}

//查询所有数据
public List listProduct() {
List productList = new ArrayList();
for(int i=0;i<10;i++){
Product p = new Product();
p.setId(new String("320000"+i));
p.setName("product_"+i);
productList.add(p);
}
return productList;
}

Flex端

如下:
//查询结果集处理函数
protected function dataResult(e:ResultEvent){

//判断返回的数据类型

if(e.result instanceof Object){
Alert.show("该返回类型为Object");
var data:Object = e.result as Object;
dg.dataProvider = data
CursorManager.removeBusyCursor();
}else{
Alert.show("该返回类型为ArrayCollection");
var data2:ArrayCollection = e.result as ArrayCollection;

dg.dataProvider = data2;
CursorManager.removeBusyCursor();
}
}
为什么执行的时候,走的都是if(){。。。。}下面的语句

如果我改成
if(e.result instanceof ArrayCollection){
Alert.show("该返回类型为ArrayCollection");
var data:ArrayCollection= e.result as ArrayCollection;
dg.dataProvider = data
CursorManager.removeBusyCursor();
}else{
Alert.show("该返回类型为ArrayCollection");
var data2:ArrayCollection = e.result as ArrayCollection;

dg.dataProvider = data2;
CursorManager.removeBusyCursor();
}
它还是执行if中的语句,求大师神解


[解决办法]
ResultEvent 反回的 result 有且仅有 Object 对象, 没其它了.
[解决办法]
任意对象都可以 as 为Object
你可以试试判断 ArrayCollection 的 length 来决定你的操作.

读书人网 >flex

热点推荐