Coldfusion 使用两种不同的方法调用cfinvoke

Coldfusion 使用两种不同的方法调用cfinvoke,coldfusion,Coldfusion,我有两个cfinvoke,我需要在一个cfm中使用它们 <cfinvoke component="cfc/queries" method="getProjects" searchString="#Session.Auth.pref_name#" view="#Session.Auth.view#" returnvariable="Projects"> <cfinvoke component="cfc/queries" method="projectDetails" sea

我有两个cfinvoke,我需要在一个cfm中使用它们

<cfinvoke component="cfc/queries" method="getProjects"  searchString="#Session.Auth.pref_name#" view="#Session.Auth.view#" returnvariable="Projects"> 
<cfinvoke component="cfc/queries" method="projectDetails"  searchString="#URL.id#" projectsuffix="#URL.suffix#" returnvariable="Details">

返回两个查询,但当我以这种方式编码时,它不起作用。
我对ColdFusion还是新手,我不知道如何解决这个问题。

因为两个函数都在同一个CFC中,所以您不想使用
cfinvoke
,因为它每次调用时都会重新创建对象。相反,请使用
new
createObject()


然后就可以引用函数了

<cfset Projects = 
    queries.getProjects(
        searchString=session.Auth.pref_name, 
        view = session.Auth.view
    )
>
<cfset Details = 
    queries.projectDetails(
        searchString=url.id, 
        projectsuffix=url.suffix
    )
>

在传递它们之前,您可能需要清理
url.id
url.suffix
。这将有助于解决注入问题


getProjects()
做什么

我们可以这样写

<!--- Object creation --->
<cfset query = CreateObject("component", "cfc.queries")/>

<!--- Function call --->
<cfset Projects = query.getProjects( searchString = session.Auth.pref_name, view = session.Auth.view )>
<cfset Details = query.projectDetails( searchString = session.Auth.pref_name, view = session.Auth.view )>


什么是“不工作”?有错误吗?另外,请注意使用来自不可信源的任何内容,如
URL
。这是非常可注入的。不,没有错误,但是方法(getProjects)不返回任何projectAre
getProjects
projectDetails
在同一组件中?该组件是否需要
init
函数?以及ColdFusion的哪个版本?是的,它们位于同一组件中,并且不需要init function函数列出所有项目扫描您提供的代码示例?它是否有
返回
<!--- Object creation --->
<cfset query = CreateObject("component", "cfc.queries")/>

<!--- Function call --->
<cfset Projects = query.getProjects( searchString = session.Auth.pref_name, view = session.Auth.view )>
<cfset Details = query.projectDetails( searchString = session.Auth.pref_name, view = session.Auth.view )>