2009-07-09 4 views
1

J'ai été bloqué par un problème de coldfusion, toutes les suggestions sont appréciées. Lemme décribe maintenant mon problème.problème coldfusion sur la méthode onRequest dans Application.cfc


j'ai un Application.cfc dans ma racine de site Web, le contenu, il se présente comme suit:

<cfcomponent output="false"> 
    <cffunction name="onRequest" returnType="void"> 
     <cfargument name="thePage" type="string" required="true"> 
     <cfinclude template="#arguments.thePage#"> 
    </cffunction> 
</cfcomponent> 

et aussi j'ai un modèle de cfm dont le nom est test.cfm, il est contenu est répertorié comme suit:

<cfdump var="#variables.this#"><br /><br /><br /><br /><br /><br /> 
<cfdump var="#this#"> 

maintenant si vous demandez le test.cfm, tout est ok, mais quand je supprime la méthode onRequest à 0.123.et demander à nouveau test.cfm, il se plaint que "Element THIS is undefined in VARIABLES. ", je ne sais pas pourquoi, quelqu'un peut-il l'expliquer? grand merci.

ps:

vous pouvez ajouter autant de fonctions dans Application.cfc, comme onSessionStart, onSessionEnd, onApplicationStart, onApplicationEnd ..., mais s'il n'y a pas une méthode onRequest, vous demandez test.cfm et obtenez l'erreur. Je ne sais pas pourquoi.

Répondre

7

C'est parce que le cette portée se réfère à une instance cfc. Lorsque vous incluez test.cfm depuis application.cfc , ce fait référence à l'instance application.cfc. Lorsque vous appelez test.cfm directement , ce n'existe pas car la requête n'a pas passé par application.cfc, donc vous n'êtes pas dans une instance cfc.

Vous ne savez pas ce que vous essayiez de faire, mais vous ne voulez probablement pas utiliser ce en dehors d'un cfc. Si vous voulez vider le champ d'application de test.cfm faire juste ceci:

<cfdump var="#application#"/> 
3

De retour vrai à partir de la méthode onRequestStart va charger la page pour vous. Comme l'indique dwb, votre 'ceci' fait référence à Application.cfc parce que vous l'avez inclus dans l'une des méthodes. Si vous avez besoin de vous référer à l'Application, n'utilisez pas la portée de l'application 'this', sauf si vous êtes vraiment dans Application.cfc.

+1

Ceci est incorrect - et honte à quiconque a aveuglément augmenté sans tester ou savoir avec certitude qu'il était correct! Si vous n'incluez pas le fichier demandé, vous ne verrez aucune sortie. (Voir: http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=AppEvents_08.html) Peut-être que vous pensiez à l'événement onRequestEnd? Ce que vous avez dit est vrai pour onRequestStart. (Voir: http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=AppEvents_08.html) –

+0

Ha- vous avez raison. Je pensais à onRequestStart. Je vais éditer ma réponse même si je ne suis pas sûr que ce soit toujours pertinent ... –

Questions connexes