我有一個我想在整個項目中使用的類。它基本上可以讓我輕鬆地使用RemoteObject,這樣我就不必在整個項目中定義它。它在不傳遞「args」到sendRequest(..)時有效。但是,當我想調用帶參數的CFC功能,並嘗試通過「ARGS」在我得到以下錯誤:Flex 3動態RemoteObject類
The parameter USERNAME to function getAllPreferences is required but was not passed in.
繼承人我的代碼:
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定義的。我不明白這會有多大的不同。
運行的想法:(
編輯:它的工作對我們來說,現在,如果有人想使用此解決方案,併爲實施這一類的問題,我會很樂意幫助
謝謝,使用ao.send(args)工作。 – 2009-06-24 12:32:09