首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flex 3动态RemoteObject类

Flex 3动态RemoteObject类
EN

Stack Overflow用户
提问于 2009-06-23 20:50:29
回答 2查看 5.4K关注 0票数 1

我有一个课程,我想在整个项目中使用。从本质上讲,它将允许我轻松地使用RemoteObject,这样我就不必在所有的项目中定义它。当不将"args“传递给sendRequest(..)时,它可以工作。但是,当我想用参数调用cfc函数并尝试传递"args“时,我会得到以下错误:

函数getAllPreferences的参数用户名是必需的,但没有传入。

这是我的代码:

代码语言:javascript
复制
package Actionscript
{
    import mx.collections.ArrayCollection;
    import mx.rpc.AbstractOperation;
    import mx.rpc.events.FaultEvent;
    import mx.rpc.events.ResultEvent;
    import mx.rpc.remoting.mxml.RemoteObject;

    public class CFCRemote
    {
        private var ro:RemoteObject;
        private var roSource:ArrayCollection;
        private var appPointer:Object;

        // constructor
        public function CFCRemote(appMain:Object):void
        {
            appPointer = appMain;
            roSource = new ArrayCollection();
        }

        public function addSource(alias:String, source:String, thisObj:Object):void
        {
            roSource.addItem({alias:alias, source:source, thisObj:thisObj});
        }

        public function sendRequest(roAlias:String, funcName:String, args:Object = null):void
        {
            var roCaller:Object;

            ro = new RemoteObject("ColdFusion");
            ro.showBusyCursor = true;           

            for(var i:int = 0; i < roSource.length; i++)
            {
                if(roSource.getItemAt(i).alias == roAlias)
                {
                    ro.source = roSource.getItemAt(i).source;
                    roCaller = roSource.getItemAt(i).thisObj;
                    break;
                }
            }

            var ao:AbstractOperation = ro.getOperation(funcName);
            ao.arguments = args;
            ao.addEventListener(ResultEvent.RESULT, function(e:ResultEvent):void{roCaller.handleROF(e,funcName)});
            ao.addEventListener(FaultEvent.FAULT, function(e:FaultEvent):void{appPointer.server_fault(e,funcName,"unknown")});
            ao.send();

        }
    }
}

当我跟踪(args.username)时,我看到它正确地传入。我在另一个脚本中尝试过这一点,但是该脚本中的RemoteObject是用mxml定义的。我不认为这会有什么不同。

想法枯竭:(

编辑:它现在正在为我们工作,如果有人想使用这个解决方案,并且在实现这个类时遇到问题,我很乐意帮助您

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-24 07:39:11

尝试将参数传递给AbstractOperation.send(),而不是在AbstractOperation上设置它们。我以前没有尝试过后者,但是我已经将它们传递给send()方法更多次,这样我就可以毫无问题地计数。您可能需要考虑使用“. args”或作为Array/ArrayCollection传递args,以确保您维护订单。

票数 1
EN

Stack Overflow用户

发布于 2009-06-23 23:32:19

好吧,我不能说我非常了解Flex,但是您实例化抽象类的事实确实给我带来了一些危险。通常,您从不直接实例化抽象类,而是将它们用作实际实例化类的基类。

在这种情况下,我认为你是在寻找操作类。如果是这样的话,那么您可能还需要为它提供一个"argumentNames“数组--这似乎提供了传递参数的顺序。

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

https://stackoverflow.com/questions/1035109

复制
相关文章

相似问题

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