I encountered 2 ColdFusion gotchas today, blogging them here so that I won't forget.
First one has to do with cfargument, have a look at the code below:[code="cf"] <cfargument name="mode" default="custom" required="false" type="string" /> <cfargument name="clientID" default="" required="false" type="numeric" /> [/code]
Can you spot why the code won't working? When I call the function:[code="cf"] qFields = oJobBoardService.getFields(); [/code]
Here is the error that I get:
The CLIENTID argument passed to the getFields function is not of type numeric.
It's a bit confusing at first, you see when I call the function I didn't pass any arguments into it, but why the error indicate that ClientID was passed in?
I finally found out that it's because I set the default value for ClientID as empty string while I specified the argument type as numeric. Changing the default to 0 fixed the error. When you think about it, it kind of makes sense that ColdFusion validate the default value as well not only the supplied value.
Ah, another lesson learnt!