条件逻辑中的 Coldfusion 函数

标签 coldfusion

我的 cfc 中的函数有问题。当我尝试引入条件逻辑以将查询分配给网格时,他们的行为很有趣。基本上在 URL 中我会有 ?GRIDID=x 并且它会告诉 cfc 要运行哪个函数,但是当我将关闭的 cffunction 标记嵌套在 if 语句中时,它抛出一个错误。这是代码。

<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>

最佳答案

在您的组件中添加额外的功能。

<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)>
  </cfif>

  <cfif ARGUMENTS.gridID EQ "2">
    <cfquery name="x" datasource="#dsn#">
      <!--- .... --->
    </cfquery>
    <!--- call your other functions --->
    <cfset otherFunction(arg1, arg2)>
    <cfset anotherFunction(arg1, arg2)>
    <cfreturn QueryConvertForGrid(qGrabInfo, Arguments.page, Arguments.pagesize)>
  </cfif>
</cffunction>

同一组件中的新功能

<cffunction name="otherFunction" access="remote" output="false" returntype="any">
  <cfargument name="arg1">
  <cfargument name="arg2">
  <!--- do things --->
</cffunction>

<cffunction name="anotherFunction" access="remote" output="false" returntype="any">
  <cfargument name="arg1">
  <cfargument name="arg2">
  <!--- do things --->
</cffunction>

关于条件逻辑中的 Coldfusion 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31880903/

相关文章:

mysql - 即使在 SELECT First 之后,双重请求也会重复数据库条目

css - 如何防止 CFDocument 中的分页出现在内容中间?

tomcat - 如何声明/var/www为Tomcat和Railo ROOT?

forms - ColdFusion 将表单值转换为结构

coldfusion - 如何将 cftimer 显示的时间存储在变量中?

coldfusion - 是否可以将 ODBC 服务添加到现有的 CF 2016 安装中?

memory-management - ColdFusion JVM 无缘无故地使用内存

coldfusion - 当我在 cfoutput 中调用函数时,为什么 ColdFusion 会添加空格?

coldfusion - 未遵守 web.xml 中的默认文档(开发人员/独立服务器)

php - 在 PHP 中取消加密/重新加密 ColdFusion 加密的字符串