Skip to main content
Inspiring
March 28, 2012
Answered

cffunction valitation error

  • March 28, 2012
  • 2 replies
  • 1135 views

Hi,

I have a form where I  fill a customer-no. into an input field and get the customer name using databinding.

This works fine, but when I put non-numeric values into customer-no I get following error:

Error invoking CFC customer.cfc : The CUST_ID argument passed to the getcustomer function is not of type numeric. [Enable debugging by adding 'cfdebug' to your URL parameters to see more information]

The message is correct, but how can I avoid to run the getcustomer function when the value is not numeric?

Here is my code:

The form:

<cfinput type="text" name="customer_no" style="width:140;background-color:yellow" maxlength="10"  validate="integer" validateat="onblur"   message="Customer No. format is integer">

<cfinput type="text" name="customer_name" style="width:170" maxlength="200" bind="cfc:customer.getcustomer({customer_no})" readonly="yes">

customer.cfc:

<cfcomponent >

<cffunction name="getcustomer" access="remote" returntype="string" output="yes"  >

    <cfargument name="cust_id"   type="numeric"  required="true" >

  

                 <cfset  r_customer = "">

       

         <cfquery name = "select_customer" dataSource = "x">

        SELECT name

        FROM customer

        WHERE id =  <cfqueryparam   cfsqltype="cf_sql_numeric" value="#arguments.cust_id#" >

        </cfquery>

                 

<cfreturn r_customer>

</cffunction>

</cfcomponent>

    This topic has been closed for replies.
    Correct answer Owainnorth

    Change the argument to type="any", then use isNumeric() inside your function. If it's not numeric, return an empty string.

    2 replies

    BKBK
    Community Expert
    Community Expert
    March 28, 2012

    biene22 wrote:

    The message is correct, but how can I avoid to run the getcustomer function when the value is not numeric?

    That is a trick question! The attribute bind="cfc:customer.getcustomer({customer_no})" implies that the function will run automatically, whether or not customer_no is numeric.

    Owainnorth
    OwainnorthCorrect answer
    Inspiring
    March 28, 2012

    Change the argument to type="any", then use isNumeric() inside your function. If it's not numeric, return an empty string.

    biene22Author
    Inspiring
    March 28, 2012

    Yes it works. Thank you very much!

    Owainnorth
    Inspiring
    March 28, 2012

    Sometimes the simplest solutions are the best