Для удаленного взаимодействия с Coldfusion Flex имеет встроенный способ.
1) Необходимо создать проект Flex, указав ColdFusion в качестве сервера
2) Сервер Coldfusion будет иметь по умолчанию все файлы дескрипторов, необходимые для удаленного взаимодействия с Flash.
3) Удаленные объекты используются для связи с компонентами cf
<s:RemoteObject destination="ColdFusion"
source="com.stackoverflow.testcfc"
showBusyCursor="true"
id="ro">
<s:method name="myFunction"
result="method1_resultHandler(event)">
<s:arguments>
<arg1 />
<arg2 />
<!-- and so on -->
</s:arguments>
</s:method>
</s:RemoteObject>
source
Свойство - это пакет компонента cf из webroot.например, если webroot имеет значение C:\ColdFusion8\wwwroot
, а cfc находится в C:\ColdFusion8\wwwroot\com\stackoverflow\testcfc.CFC
, то приведенное выше значение source
будет правильным
4) Код для вызова метода remoteObject будет:
protected function sendRequest(event:FlexEvent):void {
var op:AbstractOperation=ro.getOperation("myFunction");
op.arguments={arg1: "someValue", arg2: 100};
op.send();
}
5) Обработчик результата будет выглядеть так:
protected function method1_resultHandler(event:ResultEvent):void {
//return value of cffunction in event.result
event.result;
}
6) CFC будет выглядеть примерно так:
<cfcomponent>
<cffunction name="myFunction" access="remote" returntype="string">
<cfargument name="arg1" type="string" required="yes">
<cfargument name="arg2" type="numeric" required="yes">
<cfreturn arg1 & ToString(arg2)>
</cffunction>
</cfcomponent>
EDIT Удаленный объект, который я создалв mxml (для flex) Для создания чистого удаленного объекта ActionScript вам просто нужно сделать следующее:
var ro:RemoteObject=new RemoteObject("ColdFusion");
ro.showBusyCursor=true;
ro.source="com.stackoverflow.testcfc";
var op:AbstractOperation=new AbstractOperation(null, "myFunction");
op.addEventListener(ResultEvent.RESULT, method1_resultHandler);
if(!ro.operations) {
ro.operations={};
}
ro.operations["myFunction"]=op;