1

当我尝试从 2 个不同的 CFC 实例化一个 CFC 时,ColdFusion 返回 500 错误。我尝试让其中一个 CFC 扩展另一个,但它没有解决问题。这是可能的,还是我只是做错了什么?

<!--- one.cfc --->
<cfcomponent name="FirstCFC">
   <cfset this.Tools = createObject('component', 'toolbox').init()>
....
</cfcomponent>

<!--- two.cfc --->
<cfcomponent name="SecondFC">
   <cfset this.Tools = createObject('component', 'toolbox').init()>
....
</cfcomponent>

<!--- toolbox.cfc --->
<cfcomponent name="Toolbox">
   <cffunction name="init" access="public">
      <cfreturn this>
   </cffunction>

   <cffunction name="someFunc" access="public">
   </cffunction>
</cfcomponent>

这是 500 错误的屏幕截图

在此处输入图像描述

这是一个更“完整”的代码示例

http://pastebin.com/zJ1zpHYy

4

2 回答 2

3

您包含的 java 堆栈跟踪指示无限递归错误。创建类型 A 的对象时要小心,因为它们的伪构造函数中有一个 B 类型的新对象。如果对象 B本身在伪构造函数中创建了 A 类型的对象,那么您自己就会无限递归地创建对象,并以丑陋的 java 堆栈跟踪结束。

于 2012-04-23T03:24:24.943 回答
1

肖恩是对的。他发布了更多代码,您可以看到 two.cfc 生成 tools.cfc 和 tools.cfc 生成 two.cfc。

您需要转向注入式设置(例如,ala ColdSpring)。

于 2012-04-23T17:53:50.340 回答