Skip navigation
biene22
Currently Being Moderated

cffunction valitation error

Mar 28, 2012 3:43 AM

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>

 
Replies
  • Currently Being Moderated
    Mar 28, 2012 4:21 AM   in reply to biene22

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

     
    |
    Mark as:
  • Currently Being Moderated
    Mar 28, 2012 5:01 AM   in reply to biene22

    Sometimes the simplest solutions are the best

     
    |
    Mark as:
  • Currently Being Moderated
    Mar 28, 2012 11:24 AM   in reply to biene22

    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.

     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points