You pass parameters to a method in a CFC by using the cfinvoke tag, direct method invocations, or by passing parameters in a URL.
When you use the cfinvoke tag, ColdFusion provides several methods for passing parameters to CFC methods:
You can use any combination of these methods in a single invocation. If you use the same name in two or three of these methods, ColdFusion uses the value based on the following order of precedence:
Passing parameters by using attribute format
You can pass parameters in the cfinvoke tag as tag attribute name-value pairs, as the following example shows:
<cfinvoke component="authQuery" method="getAuthSecure" lastName="#session.username#" pwd="#url.password#">
In the example, the parameters are passed as the lastName and pwd attributes.
Passing parameters in the argumentCollection attribute
If you save attributes to a structure, you can pass the structure directly using the cfinvoke tag's argumentCollection attribute. This technique is useful if an existing structure or scope (such as the Forms scope) contains values that you want to pass to a CFC as parameters, and for using conditional or looping code to create parameters.
When you pass an argumentCollection structure, each structure key is the name of a parameter inside the structure.
The following example passes the Form scope to the addUser method of the UserDataCFC component. In the method, each form field name is a parameter name; the method can use the contents of the form fields to add a user to a database.
<cfinvoke component="UserDataCFC" method="addUser" argumentCollection="#Form#">
Passing parameters by using the cfinvokeargument tag
To pass parameters in the cfinvoke tag body, use the cfinvokeargument tag. Using the cfinvokeargument tag, for example, you can build conditional processing that passes a different parameter based on user input.
The following example invokes the corpQuery component:
<cfinvoke component="corpQuery" method="getEmp"> <cfinvokeargument name="lastName" value="Wilder"> </cfinvoke>
The cfinvokeargument tag passes the lastName parameter to the component method.
In the following example, a form already let the user select the report to generate. After instantiating the getdata and reports components, the action page invokes the doquery component instance, which returns the query results in queryall. The action page then invokes the doreport component instance and uses the cfinvokeargument tag to pass the query results to the doreport instance, where the output is generated.
<cfobject component="getdata" name="doquery"> <cfobject component="reports" name="doreport"> <cfinvoke component="#doquery#" method="#form.whichreport#" returnvariable="queryall"> <cfinvoke component="#doreport#"method="#form.whichreport#"> <cfinvokeargument name="queryall" value="#queryall#"> </cfinvoke>
ColdFusion provides three methods for passing parameters to CFC methods in direct method invocations:
ColdFusion lets you pass parameters to CFC methods in a URL. To do so, you append the URL in standard URL query-string, name-value pair syntax; for example:
http://localhost:8500/CompanyQuery.cfc?method=getEmp&lastName=Adams