【问题标题】:Coldfusion, The symbol you provided [method_name] is not a functionColdfusion,您提供的符号 [method_name] 不是函数
【发布时间】:2011-12-03 02:29:08
【问题描述】:

运行 CF 9,0,1,274733

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

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

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

默认变量定义如下:

<cfset VARIABLES.gamesBetTypesID = 0 />

除此之外,没有其他 VARIABLES、vars、LOCALs、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>

当错误被抛出时,我使用以下方式记录 CFC 元数据的转储 获取元数据(gamesBetTypesObj)。根据元数据,getGamesBetTypesID 函数确实存在。

以前有其他人了解过这个吗?我读过它可能是由于命名和范围冲突而发生的,但我没有。

提前致谢。

【问题讨论】:

  • 我遇到了完全相同的错误,这只发生在负载下。 stackoverflow.com/questions/7272498/…虽然我的情况和你的情况略有不同,但确实没有找到好的答案。
  • 嗨,Jason,真的不想发布整件事。我刚刚更新以显示它失败的方法。
  • 嗨,丹,谢谢。在发布我的帖子之前,我阅读了您的帖子。情况略有不同,但是是的,它只出现在负载下。非常令人沮丧。
  • 你在使用accessor="True"吗?或persistent="true"?
  • 亨利,使用 accessors="true"。

标签: coldfusion components


【解决方案1】:

在发布上述问题后,我删除了&lt;cfproperty name="gamesBetTypesID" type="numeric" /&gt;,并为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 个异常。

这让我相信,在通过 &lt;CFPROPERTY&gt; 生成/使用隐式访问器时存在一个错误,该错误仅在某些情况下出现。我将使用Adobe 记录一个错误

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多