Flex 3 RemoteObject-Dynamische Klasse
Habe ich eine Klasse, die ich nutzen möchte in meiner ganzen Projekte. Im wesentlichen würde mir erlauben, um bequem arbeiten mit RemoteObject, so dass ich nicht haben, um zu definieren, das in allen meinen Projekten. Es funktioniert, wenn nicht übergeben, "args" sendRequest(..). Aber wenn ich will, nennen Sie die cfc-Funktion mit Parametern und versuchen nebenbei "args" bekomme ich die folgende Fehlermeldung:
Den parameter USERNAME-Funktion getAllPreferences erforderlich ist
wurde aber nicht übergeben.
Heres mein code:
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();
}
}
}
Wenn ich trace(args.username) ich sehe, dass seine übergebenen richtig. Ich versuchte dies in einem anderen Skript, aber das RemoteObject, die im Skript definiert wurde, mit mxml. Ich sehe nicht, wie das wäre viel anders.
Langsam die Ideen aus 🙁
Edit: Es funktioniert jetzt für uns, wenn jemand will, um diese Lösung verwenden, und ist ein problem der Implementierung dieser Klasse werde ich gerne helfen
InformationsquelleAutor Chris Klepeis | 2009-06-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, die übergabe der Argumente an AbstractOperation.send() statt der Einstellung Sie auf der AbstractOperation. Ich habe nicht versucht, den letzteren vor, aber ich habe an Ihnen, das an die send() Methode mehrere Male, die ich zählen kann, ohne Probleme. Sie betrachten wünschen können, die übergabe der Argumente mit "... args" oder als Array/ArrayCollection, um sicherzustellen, Sie erhalten die Bestellung.
InformationsquelleAutor cliff.meyers
Gut kann ich nicht sagen, ich weiß, Flex sehr gut, aber die Tatsache, dass Sie die Instanziierung einer abstrakten Klasse nicht werfen einige rote Fahnen für mich. In der Regel, die Sie nie direkt instanziieren, abstrakte Klassen - statt Sie als Basisklasse für die Klassen, die Sie eigentlich tun instanziieren.
In diesem Fall habe ich denke Sie sind auf der Suche für die Bedienung Klasse. Wenn das der Fall ist, dann müssen Sie möglicherweise auch, um es mit einer "argumentNames" array - scheint dies zu bieten, in welcher Reihenfolge die Argumente, die übergeben werden sollen.
InformationsquelleAutor Branden Hall