最近、知って、びっくりしたのですが、cfmoduleって2度呼ばれることがあるんですね。
例えば、
<CFMODULE TEMPLATE="hoge.cfm"> ・ ・ ・ |
だと、cfmoduleは、一回しか、コールされないのですが、
<CFMODULE TEMPLATE="hoge.cfm"> </CFMODULE> |
だと、なんと、hoge.cfmは、2回コールされるのです。
また、こう呼び出しても、2回コールされます。
<CFMODULE TEMPLATE="hoge.cfm" /> |
仮に、hoge.cfmの中身が下だったとします。
Hello ColdFusion<BR> |
すると実行したとき、下のように表示されます。
Hello ColdFusion Hello ColdFusion |
ここで、cfmoduleが呼び出されたときに、hoge.cfm内のthisTag.ExecutionModeは、'start'になって、終了タグで呼び出された場合、thisTag.ExecutionModeの値は、'end'になります。
したがいまして、hoge.cfmが
Hello ColdFusion <BR> <CFIF thisTag.ExecutionMode is "start"> this tag is start!!<BR> </CFIF> <CFIF thisTag.ExecutionMode is "End"> this tag is end!!<BR> </CFIF> |
の場合、終了タグを使ったcfmoduleの呼び出し結果は、
Hello ColdFusion this tag is start!! Hello ColdFusion this tag is end!! |
となります。
ちなみに、呼び出し元が、
<CFMODULE TEMPLATE="hoge.cfm"> foo <BR> </CFMODULE> |
となっていた場合、表示結果は、
Hello ColdFusion this tag is start!! foo Hello ColdFusion this tag is end!! |
となります。
このことから、cfmoduleでは、一度、呼び出し先を処理して、それから、終了タグにいきつくまで、呼び出し元のcfmodule間の処理を行い、終了タグついた時に、再度、呼び出し先をコールするということなんですね。
0 コメント:
コメントを投稿