Coldfusion components: - the argument passed to the function is not of type numeric

I have a simple form

form.cfm: -

 <cfset Registr = createObject("component", "forms.Registr") /> 
 <cfset setFoo = createObject('component','forms.Registr).putNUsr(username,password,rating) />

    <form name="regFrm"  action="#cgi.script_name#" method="post" onsubmit="submitform();" >
      <tr><td>Username:</td>

    <td><input  type="text" name=" Username" value="#form. Username#" ></td></tr>


        <tr><td>Password:</td>
    <td><input class="" type="password" name="password" value="#form.password#" ></td></tr>     

        <tr><td>Rate:</td>

                <select name="rating" >
                    <option value="" ></option>
                    <cfloop query="qGetReting">
                        <option value="#rating_id#" <cfif form. rating eq prof_id>selected</cfif> >#rating#</option>
                    </cfloop>
                </select>
            </td>
        </tr>
    </form>

Now this cfc is called Registr.cfc in the "forms" folder, which has an insert function called "putNUsr" for the "Registr.cfc" code as follows.

<cfcomponent>
<cffunction name="putNUsr" returntype="void" displayname="" output="no">
        <cfargument name="password" type="string" required="true">
        <cfargument name="rating" type="numeric" required="true">        
        <cfargument name="username" type="string" required="true">    
            <cfquery datasource="#application.xyz#" name="q_putNUsr">
                insert into 
           users (username
                , password
                , rating)

                 values(                

            <cfqueryparam value="#arguments. username#" cfsqltype="CF_SQL_VARCHAR" />,          
            <cfqueryparam value="#arguments.password#" cfsqltype="CF_SQL_VARCHAR" />,
            <cfqueryparam value="#arguments.rating#" cfsqltype="CF_SQL_INTEGER"  )

                    </cfquery>
</cffunction>
 </cfcomponent>

I can fill in the database with data if I do not use the "rating" field of the form, which is numeric. Else I get the error as follows: -

The RATING argument passed to the putNUsr function is not of type numeric. 
If the component name is specified as a type of this argument, it is possible that either a definition file for the component cannot be found or is not accessible.

PLEASE HELP -S Vali

+3
source share
4 answers

You have defined the order of the parameters in your function as password, rating, username, but pass them in the order of username, password, rating.

ColdFusion , putNUsr (username = 'me', password = 'letmein', rating = 5). ,

+4

. , , - Val(), 0 ...

+2

() putNUsr. .

putNUsr, , 0 ( ).

+1

I found the same problem in the code. It was resolved when I replace the "Password" parameter with a different name, for example, "PasswordVal". For some reason, Coldfusion does not read the parameter named Password and does not throw an error. If you change the password name with a different name, then the code will start working.

0
source

Source: https://habr.com/ru/post/1742925/


All Articles