Coldfusion,您提供的符号[method_name]不是函数

时间:2011-10-07 15:10:45

标签: coldfusion components

运行CF 9,0,1,274733

我有一个名为getGamesBetTypesID()的方法的自定义DAO CFC。

该方法由CF从以下属性隐式生成/合成:

<cfproperty name="gamesBetTypesID" type="numeric" />

默认变量定义如下:

<cfset VARIABLES.gamesBetTypesID = 0 />

除此之外,没有其他VARIABLES,vars,LOCAL,ARGUMENTS或称为getGamesBetTypesID的方法。所有CFC和函数变量都是正确的范围。

这个save()方法被调用了数千次,但是以下错误会被随机抛出,只有少数几次。

Detail: The symbol you provided getGamesBetTypesID is not the name of a function. 
Message: Entity has incorrect type for being called as a function. 

这是save()方法:

<cffunction name="save" access="public" returntype="void" output="false">

    <cfif getGamesBetTypesID() eq 0 or getGamesBetTypesID() eq "">
        <cfset create() />
    <cfelse>
        <cfset update() />
    </cfif>

</cffunction>

当抛出错误时,我使用登录CFCs元数据的转储 的getMetaData(gamesBetTypesObj)。根据元数据,函数getGamesBetTypesID确实存在。

之前还有其他人吗?我已经读到它可能由于命名和范围冲突而发生,我没有。

提前致谢。

1 个答案:

答案 0 :(得分:2)

在发布上述问题后,我删除了<cfproperty name="gamesBetTypesID" type="numeric" />并为VARIABLES.gamesBetTypesID添加了明确的getter和setter。

<cffunction name="getGamesBetTypesID" output="false" access="public" returntype="numeric">
    <cfreturn VARIABLES.gamesBetTypesID />
</cffunction>

<cffunction name="setGamesBetTypesID" output="false" access="public" returntype="void">
    <cfargument name="gamesBetTypesID" required="true" type="numeric" />
    <cfset VARIABLES.gamesBetTypesID = ARGUMENTS.gamesBetTypesID />
</cffunction>

这段代码已经在生产中运行了一个星期,包括一个周末,这是我们忙碌的时期。在过去的7天里没有抛出任何例外。以前,在忙碌的一天中,最多会有15个例外。

这让我相信通过<CFPROPERTY>生成/使用隐式访问器的错误只会出现在某些情况下。我要用Adobe

记录一个错误

如果有任何进展,我会更新。