Matt Gifford aka coldfumonkeh | Consultant Developer
View Github Profile


ColdFusion CFCs and Flash Builder 4

Jul 15, 2010

Following on from the cfmeetup presentation last week on "Getting Started with Adobe AIR", I received some requests to share the code used in the example applications.

In this post, you will find not only the source code to connect a Flash Builder 4 application to a remote ColdFusion component, but also a rather useful (hopefully) video tutorial to guide you on your way.

You can view the video by pressing the above link or watch it directly on YouTube.

Source Code

HelloWorld.cfc

<cfcomponent 	displayname="helloWorld"
				output="false"
				hint="I am a simple component that you can use to call
						from your Flex applications.">

	<cffunction name="helloWorld"
				access="remote"
				output="false"
				hint="I return a string greeting.">

		<cfreturn 'Monkeh love IS good love!' />

	</cffunction>

	<cffunction name="helloPerson"
				access="remote"
				output="false"
				hint="I return a personalised string greeting.">

		<cfargument name="name" required="true"
					type="String"
					hint="The name of the person to greet" />

		<cfreturn 'Hey, #arguments.name#! Did you know that
						Monkeh love is good love?' />

	</cffunction>

	<cffunction name="getQuery"
				access="remote"
				output="false"
				hint="I return a query object.">

		<cfset var qContacts = queryNew('firstName, lastName') />

			<cfset queryAddRow(qContacts, 4) />
			<cfset querySetCell(qContacts, 'firstName', 	'Paul', 		1) />
			<cfset querySetCell(qContacts, 'lastName', 		'McCartney', 	1) />
			<cfset querySetCell(qContacts, 'firstName', 	'John', 		2) />
			<cfset querySetCell(qContacts, 'lastName', 		'Lennon', 		2) />
			<cfset querySetCell(qContacts, 'firstName', 	'George', 		3) />
			<cfset querySetCell(qContacts, 'lastName', 		'Harrison', 	3) />
			<cfset querySetCell(qContacts, 'firstName', 	'Ringo', 		4) />
			<cfset querySetCell(qContacts, 'lastName', 		'Starr', 		4) />

		<cfreturn qContacts />

	</cffunction>

</cfcomponent>

The main mxml file

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
			   xmlns:s="library://ns.adobe.com/flex/spark"
			   xmlns:mx="library://ns.adobe.com/flex/mx"
			   minWidth="955"
			   minHeight="600"
			   creationComplete="remotesvc.getQuery()">

	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->

		<s:RemoteObject id="remotesvc"
						destination="ColdFusion"
						endpoint="http://localhost:8500/flex2gateway/"
						source="helloWorld">

			<s:method name="helloPerson"
					  result="helloResult(event)" />

			<s:method name="helloWorld"
					  result="helloResult(event)" />

			<s:method name="getQuery"
					  result="queryResult(event)" />

		</s:RemoteObject>

	</fx:Declarations>

	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;

			[Bindable] private var acBeatles:ArrayCollection;

			import mx.controls.Alert;
			import mx.rpc.events.ResultEvent;

			private function helloResult(event:ResultEvent):void {
				Alert.show(event.result.toString());
			}

			private function queryResult(event:ResultEvent):void {
				acBeatles = event.result as ArrayCollection;
			}

		]]>
	</fx:Script>

	<s:TextInput id="nameInput"  x="10" y="24"/>

	<s:Button label="Question"
			  click="remotesvc.helloPerson(nameInput.text)"
			  x="146"
			  y="25"/>

	<s:Button label="Statement"
			  click="remotesvc.helloWorld()"
			  x="245"
			  y="25"/>

	<mx:DataGrid x="10" y="88"
				 dataProvider="{acBeatles}"></mx:DataGrid>

</s:Application>

Latest Blog Posts

Jul 16, 2020
Github Actions with CommandBox and TestBox
Read More
Jul 9, 2020
Azure pipelines with CommandBox and TestBox
Read More
Dec 23, 2019
CFML content moderation detection component library
Read More