2012-04-22 7 views
1

2つの異なるCFCから1つのCFCをインスタンス化しようとすると、ColdFusionは500エラーを返します。私はCFCの1つを他のものに拡張しようとしましたが、問題を解決しませんでした。これは可能ですか、私は単に何かを間違ってやっていますか?ここで1つのCFCを2回インスタンス化する

<!--- 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

+1

通常、500エラーは、Webサーバーの設定に問題があることを示します。私はあなたのコードに間違いがないとは思わない。 –

+0

3つのCFCがすべて同じフォルダにあると仮定します –

+0

500のエラーmsgはおそらく "より良いエラーを見るために頑強な例外処理をオンにする"(またはその感想に何かを)言います。そうすれば、適切なエラーメッセージが表示されます。 IEを使用している場合は、「フレンドリーなエラーメッセージ」に切り替えてください。おそらくあなたの問題が何であるかをより明白にするでしょう。 –

答えて

3

あなたが含まれてきたJavaのスタックトレースであります無限再帰エラーを示しています。タイプAのオブジェクトを作成するときは、擬似コンストラクターにタイプBの新しいオブジェクトを持つように注意してください。オブジェクト自身疑似コンストラクタにタイプAのオブジェクトを作成した場合、オブジェクトが無限に再帰的に生成され、醜いJavaスタックトレースで終了します。

+1

うん - 私はそのエラーの原因を見ることができます - しかし、彼のコードの何もそれを示しています。私は彼がもっとコードを投稿することを望む。 –

+0

はい。彼のサンプルにはこれを引き起こす追加のインスタンス化はありませんでしたが、彼のコメントはそれが本当に原因であることを示すようです。 –

1

ショーンです。彼はより多くのコードを投稿し、two.cfcはtools.cfcを作成し、tools.cfcはtwo.cfcを作成することがわかります。

インジェクションスタイルの設定(例:ala ColdSpring)に移動する必要があります。

関連する問題