Shaun Mccran

My digital playground
 
01
D
E
C
2008

Returning useful error messages from CFC's in Flex

One thing I've learnt from my flex to CFC tomfoolery is that sometimes flex doesn't diplay very good error messages from CFC's. This is no fault of flex, but more usually a problem with the interface between it, and CF, as most of the unfriendly error messages you get are http error strings, which usually get truncated as they are raw code, so you don't get to see the problem then either.

So you need more elegant error handling in your CFC's. (or whatever back end your using)

Here is a complete script as an example, we will go through it line by line:

view plain print about
1<cfcomponent displayname="Data Object" hint="Generic data object" output="false">
2
3
4    <cffunction name="selectRecords" hint="Returns a query object based on an id" access="public" output="false" returntype="Any">
5        <cfargument name="id" required="true" type="String" hint="An id to use in the query below">
6
7            <cfset var message = "">
8
9            <!--- TRY the transaction below, throw a catch message --->
10            <cftry>
11    
12                <cfif NOT isNumeric(arguments.id)>
13                    <cfset message = "Id was not a number">
14                </cfif>
15    
16                <cfquery datasource="#application.dsn#" name="qGetRecordById">
17                    SELECT id, name, age, sex, telephone, mobile, address, postcode, county, country
18                    FROM memberTable
19                    Where id = #arguments.id#
20                </cfquery>
21    
22            <cfcatch>
23                <cfthrow message="cfcatch.message">
24
25                            <cfreturn message>
26            </cfcatch>
27            
28            </cftry>
29        
30        <cfreturn qGetRecordById />
31    </cffunction>
32</cfcomponent>

So its a normal component, with one function, it accepts an 'ID' and performs a query, and returns it.

I am setting a local variable at the top, 'message' that will only be created and used inside the scope of the CFC. Then we will 'TRY' and do our transaction. At this point I'm wrapping everything in the cftry tag so as to encapsulate any possible code errors or logic faults.

Any logic I have here will replace the value of 'message' if proven to be false, and return that message rather than the query object I was expecting.

But you'll notice the lines:

view plain print about
1<cfcatch>
2                <cfthrow message="cfcatch.message">
3
4                <cfreturn message>
5            </cfcatch>

This will catch any errors from the try block, and throw them to flex. In this way flex receives the message in the throw command, not a http response message when the CFC breaks.

This is obviously a Coldfusion - CFC specific example, but I've seen very similar error trapping in php, working in exactly the same way, so it really doesn't matter what back end your using with flex.

 
26
O
C
T
2008

Be careful using URL FlashVars!

A while ago I subscribed to an online magazine. Its a bit laddish, but it has the odd interesting article, and its done in flash/flex.

The most recent article arrived in my in-box the other day, and one of the pages was an advert for the new film 'eagle eye' rather unfortunately they had passed in your subscription name value as a flashVar in the URL scope.

This is probably one of the easiest ways to pass variables into flex, but also the most unsecure, and easily changed, as per the screen shot below. Luckily in this case it was just a display variable, but what about if this was a query param? or a value for a piece of data being sent back to a server?

There are many other ways of passing variables into flex apps, I'd go for using a properties file. Have your flex look for a server side XML definitions file on "creationComplete". Or edit your Embed/Object code, whilst still not ideal its far better than a url variable!

The magazine:
http://www.monkeymag.co.uk/

 
01
J
U
L
2008

Flex - Coldfusion Remoting, passing an Object usefully

Ever noticed that with the increase in scale of a Flex application, the amount of data that you pass around seems to grow exponentially? Well I was fed up with passing multiple values back and forth from CF to flex, so after some digging here's the first article in using objects in remoting.

[More]

 
01
J
U
L
2008

ColdFusion - Flex remoting struct() case sensitivity

One of the more frequent data Objects that I pass from CF to Flex is the structure. I recently stumbled upon a case sensitivity issue in flex, that can be solved in CF with a slight change in code.

[More]

 
24
J
U
N
2008

Method for populating a flex combo box from cfc

Many of the flex form elements can be populated directly from the data output from a coldfusion cfc, as long as you get the format right!

Here's the best way I've found to painlessly populate a combo box in flex.

[More]

 
23
J
U
N
2008

Strongly typing data between flex and coldfusion

As part of an ongoing series of working out the best ways of passing data around from coldfusion to flex (and back again) I'm looking at the different formats of passing data into flex.

I've heard that you can "strongly type" the arguments and method names etc, and that allows for much easier passing of data back and forth.

[More]

 
13
J
U
N
2008

Flex Pop-ups, and disabling/enabling the parent application

I recently needed to create a pop up window in flex, and knew that I wanted to replicate much of the functionality of the 'Alert' method, IE graying out the background.

[More]

 
22
M
A
Y
2008

Weather Web service (flex) - Part 2

In the first part of this article, we created the coldfusion back end (cfc's). The first thing we'll do in the Flex section is setup our initialize function which will call a Remote Object, to interface with the cfcs.

[More]

Previous Entries / More Entries


This content is purely my opinon, any offence or errors are unintentional, please comment your views appropriately
Site Credits
Aggregated by ColdfusionBloggers.org Powered by Coldfusion

Technology & Science Blogs - BlogCatalog Blog Directory Blog Directory & Search engine