实例化一个CFC两次

时间:2012-04-22 03:39:12

标签: coldfusion coldfusion-8 cfc

当我尝试从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错误的屏幕截图

enter image description here

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

http://pastebin.com/zJ1zpHYy

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

您需要转移到注射样式设置(例如ala ColdSpring)。