Well, in that example your ActionScript objet is "vo.TestVO"; yet your
CFC aliases components.test.TestVO . Change your CFC alias to
"vo.TestVO" and see what happens.
Also be very sensitive about case sensitivity in paths.
holmgren.eric wrote:
I am trying to pass a simple VO from CF to Flex with Flash remoting,
but I can't seem to make it work. ServiceCapture shows a correctly
typed object in the response, but Flex won't let me cast it as such.
What am I missing here?
http://coldfusion.pastebin.com/f36d7abbd
<http://coldfusion.pastebin.com/f36d7abbd>
TestVO.as:
package vo
{
[RemoteClass(alias="components.test.TestVO")];
[Bindable]
public class TestVO
{
public var value1:String;
public var value2:String;
public var value3:String;
public var value4:String;
public function
TestVO(value1:String="",value2:String="",value3:String="",value4:String="")
{
this.value1 = value1;
this.value2 = value2;
this.value3 = value3;
this.value4 = value4;
}
}
}
TestVO.cfc:
<cfcomponent output="false" alias="components.test.TestVO">
<!---
These are properties that are exposed by this CFC object.
These property definitions are used when calling this CFC as a web
services,
passed back to a flash movie, or when generating documentation
NOTE: these cfproperty tags do not set any default property values.
--->
<cfproperty name="value1" type="string" default="">
<cfproperty name="value2" type="string" default="">
<cfproperty name="value3" type="string" default="">
<cfproperty name="value4" type="string" default="">
<cfscript>
//Initialize the CFC with the default properties values.
variables.value1 = "";
variables.value2 = "";
variables.value3 = "";
variables.value4 = "";
</cfscript>
<cffunction name="init" output="false" returntype="TestVO">
<cfreturn this>
</cffunction>
<cffunction name="getValue1" output="false" access="public"
returntype="any">
<cfreturn variables.Value1>
</cffunction>
<cffunction name="setValue1" output="false" access="public"
returntype="void">
<cfargument name="val" required="true">
<cfset variables.Value1 = arguments.val>
</cffunction>
<cffunction name="getValue2" output="false" access="public"
returntype="any">
<cfreturn variables.Value2>
</cffunction>
<cffunction name="setValue2" output="false" access="public"
returntype="void">
<cfargument name="val" required="true">
<cfset variables.Value2 = arguments.val>
</cffunction>
<cffunction name="getValue3" output="false" access="public"
returntype="any">
<cfreturn variables.Value3>
</cffunction>
<cffunction name="setValue3" output="false" access="public"
returntype="void">
<cfargument name="val" required="true">
<cfset variables.Value3 = arguments.val>
</cffunction>
<cffunction name="getValue4" output="false" access="public"
returntype="any">
<cfreturn variables.Value4>
</cffunction>
<cffunction name="setValue4" output="false" access="public"
returntype="void">
<cfargument name="val" required="true">
<cfset variables.Value4 = arguments.val>
</cffunction>
</cfcomponent>
TestRO.cfc:
<cfcomponent>
<cffunction name="getTestVO" returnType="components.test.TestVO"
access="remote">
<cfscript>
testVO = CreateObject("component", "components.test.TestVO");
testVO.init();
testVO.setValue1("AAAA");
testVO.setValue2("BBBB");
testVO.setValue3("CCCC");
testVO.setValue4("DDDD");
return testVo;
</cfscript>
</cffunction>
</cfcomponent>
main.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml
<http://www.adobe.com/2006/mxml>"
layout="absolute">
<mx:Script>
<![CDATA[
import vo.TestVO;
import mx.rpc.remoting.RemoteObject;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
[Bindable]
public var testVO:TestVO = new TestVO();
public function getTestVOHandler(event:ResultEvent):void
{
testVO = event.result as TestVO;
}
public function faultHandler(event:FaultEvent):void
{
Alert.show(event.toString());
}
]]>
</mx:Script>
<mx:RemoteObject id="testRO" destination="ColdFusion"
source="components.test.TestRO">
<mx:method name="getTestVO" result="getTestVOHandler(event)"
fault="faultHandler(event)"/>
</mx:RemoteObject>
<mx:Panel x="10" y="10" width="380" height="280" layout="absolute">
<mx:Button x="147" y="208" label="Button" click="testRO.getTestVO()"/>
<mx:Label x="10" y="10" text="Value 1:" fontSize="16"
fontWeight="bold"/>
<mx:Label x="94" y="10" text="{testVO.value1}" fontSize="16"/>
<mx:Label x="10" y="42" text="Value 2:" fontSize="16"
fontWeight="bold"/>
<mx:Label x="94" y="42" text="{testVO.value2}" fontSize="16"/>
<mx:Label x="10" y="74" text="Value 3:" fontSize="16"
fontWeight="bold"/>
<mx:Label x="94" y="74" text="{testVO.value3}" fontSize="16"/>
<mx:Label x="10" y="106" text="Value 4:" fontSize="16"
fontWeight="bold"/>
<mx:Label x="94" y="106" text="{testVO.value4}" fontSize="16"/>
</mx:Panel>
</mx:Application>
--
Jeffry Houser
Flex, ColdFusion, AIR
AIM: Reboog711 | Phone: 1-203-379-0773
--
Adobe Community Expert
<http://www.adobe.com/communities/experts/members/JeffryHouser.html>
My Company: <http://www.dot-com-it.com>
My Podcast: <http://www.theflexshow.com>
My Blog: <http://www.jeffryhouser.com>