当我尝试从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错误的屏幕截图
这是一个更“完整”的代码示例
答案 0 :(得分:3)
您包含的java堆栈跟踪表明无限递归错误。创建类型为A的对象时要小心,它们的伪构造函数中有一个类型为B的新对象。如果对象B 本身在其伪构造函数中创建了一个类型为A的对象,那么您自己就会对创建的对象进行无限递归,并以丑陋的Java堆栈跟踪结束。
答案 1 :(得分:1)
肖恩是对的。他发布了更多代码,你可以看到two.cfc使tools.cfc和tools.cfc生成了两个.crc。
您需要转移到注射样式设置(例如ala ColdSpring)。