ColdFusion <cfselect> binding Error </cfselect>

时间:2011-06-17 17:42:59

标签: binding coldfusion drop-down-menu cfc

我正在尝试根据用户在上一个下拉列表中所做的选择来填充下拉列表。两个下拉列表都采用相同的形式。每个下拉列表都将填充一个二维数组,该数组包含来自cfcomponent(EasySelection)中cffunction(getClients)内传递的数据库的信息。当我尝试在浏览器中运行页面时出现以下错误(最新版本的FireFox)。我还尝试用以下代码替换bind属性的代码: “cfc:bindFcns.getClients()”...我在其中收到相同的错误消息。

以下是错误消息:

The specified CFC EasySelection could not be found.
The path to the CFC must be specified as a full path, or as a relative path from the current template, without the use of mappings.

The error occurred in C:\workspaces\jackscotty\timecard.dev\webroot\timetotals\index.cfm: line 180
   178 : <td colspan="2">
   179 : <cfSELECT NAME="paramCompanyID" 
   180 : **bind="cfc:EasySelection.getclients()" bindOnLoad="true">**
   181 : <OPTION VALUE="-1" SELECTED>Any</OPTION>
   182 : </cfSELECT>

如果它更有帮助,这是我的EasySelection.cfc代码:

<cfcomponent output="false">
  <cffunction name="getclients" access="remote" returntype="array">
      <CFQUERY NAME="qGetClients" DATASOURCE="#application.DSN#">
          SELECT * FROM companies 
          WHERE clientflag = 1 
          ORDER BY company 
      </CFQUERY>
      <cfset count = 1 />
      <cfset clientresults = arraynew(2) />
      <cfloop query="qGetClients">
          <cfset clientresults[count][1]="#companyid#" />
          <cfset clientresults[count][2]="#companyid#" />
          <cfset count= count+1 />
      </cfloop>
      <cfreturn clientresults />
  </cffunction>
  <cffunction name="getprojects" access="remote">
      <cfargument name="companyid" type="string" required="yes" />
      <cfquery name="qGetProjects2" datasource="#application.DSN#">
          SELECT * FROM projects
          WHERE companyid = '#companyid#'
          ORDER BY companyid
      </cfquery>
      <cfset count = 1 />
      <cfset projectresults = arraynew(2) />
      <cfloop query="qGetProjects2">
          <cfset projectresults[count][1]="#projectid#" />
          <cfset projectresults[count][2]="#projectid#" />
          <cfset count= count+1 />
      </cfloop>
      <cfreturn projectresults>
  </cffunction>
</cfcomponent>

非常感谢您的帮助!谢谢你的时间。

2 个答案:

答案 0 :(得分:1)

您的EasySelection cfc是否在timetotals目录中?如错误所述,您需要指定CFC的完整路径。因此,例如,如果您的CFC位于站点根目录中的“cfcs”目录中,则应将其指定为cfc:cfcs.EasySelection。通过将其指定为cfc:EasySelection ColdFusion将检查根目录,并在这种情况下检查当前目录“timetotals”。

答案 1 :(得分:0)

提供cfc的完整路径。如果您的EasySelection在CFC文件夹下,那么它应该是cfc:cfc.EasySelection。如果你在localhost下使用单独的目录运行,那么你可能需要写一些像cfc:[你的应用程序文件夹路径] .cfc.EasySelection。

简而言之,您需要从您网站的根目录提供cfc的相对路径。