問題: CFCのWSDLを要求すると、次のエラーが表示されます: Variable FORM is undefined。このコード行、application.cfc の OnRequestStart メソッドで発生します。
<cfif structKeyExists(form,'resetappvars')>
<cfset OnApplicationStart() />
</cfif>
特定のメソッドをリクエストすると、正常に機能します。フォーム構造体が存在しない場合は、cfparam を使用してデフォルトのフォーム構造体を作成することを検討しましたが、それは醜いハックのように思えます。変数または CFC のこのスコープで実際にフォーム構造体が作成されるのではないかと心配しています。多分これも正当なバグですか?
注:これは、メソッドを直接呼び出した場合に WSDL を要求した場合にのみ発生します。コードは問題なく期待どおりに実行されます。
更新: Application.cfc コード サンプル - CFC をアプリに追加し、それをリクエストして?wsdl
問題を確認してください。これは、ColdFusion 7 および ColdFusion 8 でテスト済み (および失敗) です。
<cfcomponent output="false">
<cffunction name="OnApplicationStart" access="public" returntype="boolean" output="false" hint="Fires when the application is first created.">
<cfset application.dsn = "my_dsn" />
<cfreturn true />
</cffunction>
<cffunction name="OnRequestStart" access="public" returntype="boolean" output="false" hint="Fires at first part of page processing.">
<cfargument name="TargetPage" type="string" required="true" />
<cfif structKeyExists(form,'resetappvars')>
<cfset OnApplicationStart() />
</cfif>
<cfreturn true />
</cffunction>
</cfcomponent>