【发布时间】:2015-08-07 15:00:28
【问题描述】:
我的 cfc 中的函数有问题。当我尝试引入条件逻辑以将查询分配给网格时,它们的行为很有趣。基本上在 URL 中,我将拥有 ?GRIDID=x,它会告诉 cfc 要运行哪个函数,但是当我在 if 语句中嵌套结束 cffunction 标记时,它会引发错误。这是代码。
<cffunction name="grabInfo" access="remote" output="false" returntype="any">
<cfargument name="page" required="yes">
<cfargument name="pageSize" required="yes">
<cfargument name="gridsortcolumn" required="yes">
<cfargument name="gridsortdirection" required="yes">
<cfargument name="filtercolumn" required="no" default="">
<cfargument name="filter" required="no" default="">
<cfargument name="gridID" required="yes">
<cfif arguments.gridsortcolumn eq "">
<cfset arguments.gridsortcolumn = "PatientsName" />
<cfset arguments.gridsortdirection = "asc" />
</cfif>
<cfif ARGUMENTS.gridID EQ "1">
<cfquery name="x" datasource="#dsn#">
<!--- .... --->
</cfquery>
<cfreturn QueryConvertForGrid(qGrabInfo, Arguments.page, Arguments.pagesize)>
</cffunction>
</cfif>
<cfif ARGUMENTS.gridID EQ "2">
<cfquery name="x" datasource="#dsn#">
<!--- .... --->
</cfquery>
<cfreturn QueryConvertForGrid(qGrabInfo, Arguments.page, Arguments.pagesize)>
</cffunction>
</cfif>
这会给我Context validation error for the cfif tag. 错误,但正如您所见,所有 cfif 语句都已关闭。如果我采用第一个参数并将其与结束 cffunction 标记放在 if 语句之外,它将起作用,就像这样
<cfif ARGUMENTS.gridID EQ "1">
<cfquery name="x" datasource="#dsn#">
<!--- .... --->
</cfquery>
<cfreturn QueryConvertForGrid(qGrabInfo, Arguments.page, Arguments.pagesize)>
</cfif>
<cfif ARGUMENTS.gridID EQ "2">
<cfquery name="x" datasource="#dsn#">
<!--- .... --->
</cfquery>
<cfreturn QueryConvertForGrid(qGrabInfo, Arguments.page, Arguments.pagesize)>
</cfif>
</cffunction>
我需要这样做的原因是因为我需要在GridID EQ 2时运行其他几个函数,所以我需要关闭该函数并打开另一个函数,如下所示
<cfif ARGUMENTS.gridID EQ "2">
<cfquery name="x" datasource="#dsn#">
<!--- .... --->
</cfquery>
<cfreturn QueryConvertForGrid(qGrabInfo, Arguments.page, Arguments.pagesize)>
</cffunction>
<cffunction name="otherFunction">
<!--- .... --->
</cffunction>
</cfif>
【问题讨论】:
-
我需要这样做的原因不,你不需要;-)。您混淆了函数声明和用法。组件的功能应该预先定义——不是有条件的,即在
cfif语句中。使用cfif控制您要调用 的函数以及何时调用。
标签: coldfusion