首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flex 3 flex服务结果问题

flex 3 flex服务结果问题
EN

Stack Overflow用户
提问于 2009-02-05 18:29:10
回答 4查看 4.1K关注 0票数 1

我对the服务调用的结果有问题。当结果出现并启动resultHandler函数时,我设置了一个断点,以便可以检查结果。我可以看到数组集合中有0条记录,但是我可以看到内容,所以我假设0只是引用数组的第一个索引

当我尝试将值赋给数组集合时,问题发生了,如下所示;

代码语言:javascript
复制
public function resultHandler(event:ResultEvent):void{
    var result:ArrayCollection = event.result as ArrayCollection;

此操作的结果是值为null的结果变量。有人能解释一下这里可能发生了什么吗?非常感谢

我刚刚注意到的另一件事是,结果类型是mx.utils.ObjectProxy,我需要一个数组

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-02-05 18:56:42

Chetan是对的--对ArrayCollection的强制转换操作失败了,因为源对象不是ArrayCollection。试着这样做:

代码语言:javascript
复制
public function resultHandler(event:ResultEvent):void
{
    var ac:ArrayCollection = new ArrayCollection([event.result])
    // ...
}

在运行时发生异常的情况下,"as“操作符将返回null --在您的示例中,将从ObjectProxy转换为ArrayCollection。相反,如果您将event.result作为数组的唯一成员传递(通过用[]包围它),那么您的ArrayCollection将被正确构造,并且您将能够正常地检索对象:

代码语言:javascript
复制
var o:Object = ac.getItemAt(0) as Object;
trace(o.yourObjectProperty.toString());

希望它能帮上忙!

票数 1
EN

Stack Overflow用户

发布于 2009-02-05 18:43:41

如果webservice只返回一个元素,它将被反序列化为ObjectProxy。您必须手动将其转换为数组。

我通常会在WS调用之后这样做:

代码语言:javascript
复制
if (event.result is ArrayCollection) {
    result = event.result;
}
else {
    result = new ArrayCollection([event.result]);
}
票数 2
EN

Stack Overflow用户

发布于 2009-02-05 20:19:18

数组中的0条记录是数组的长度,这实际上意味着0。如果数组的索引为0,则该数组的长度至少为1。看起来您没有得到任何数据,甚至没有空的数组集合。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/517238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档