説明

リクエストで存在しない CFML ページが指定されたときに実行します。

シンタックス

<cffunction name="onMissingTemplate" returnType="boolean">
<cfargument type="string" name="targetPage" required=true/>
...
<cfreturn BooleanValue />
</cffunction>

関連項目

ColdFusion アプリケーションの開発』の Application.cfc でのアプリケーションおよびイベントハンドラの定義メソッドの概要Application.cfc でのエラー処理

パラメーター

ColdFusion は、次のパラメーターをこのメソッドに渡します。

パラメーター

説明

targetPage

Web ルートからリクエストされた CFML ページまでのパスです。

戻り値

boolean 値です。true、または値を返さない場合は、イベントが処理されたことを示します。false の場合は、イベントが処理されなかったことを示します。

使用方法

ColdFusion は、ファイルが見つからない場合、つまり、存在しない CFML ページが URL に指定されている場合に、このメソッドを呼び出します。onMissingTemplate 関数は、イベントが処理されたことを示す場合は true、イベントが処理されなかったことを示す場合は false を返す必要があります。この関数が値を返さない場合は、true と見なされます。この関数が false を返した場合、ColdFusion は標準のエラーハンドラを呼び出します。onMissingTemplate 関数内でエラーが発生した場合、エラーハンドラは呼び出されません。したがって、見つからないテンプレートのハンドラで try/catch ブロックを使用する必要があります。catch ブロックでエラーを処理できない場合は、この関数の戻り値を false に設定して、標準のエラーハンドラでエラーをレポートできるようにする必要があります。onMissingTemplate 関数が呼び出されると、該当する場合は onApplicationStart イベントハンドラと onSessionStart イベントハンドラが最初に呼び出されますが、onRequestStart ハンドラ、onRequest ハンドラおよび onRequestEnd ハンドラは呼び出されず、onMissingTemplate ハンドラが戻るとリクエストの処理は終了します。onMissingTemplate 関数では、Application スコープ、Session スコープ、Client スコープなど、すべての標準スコープを使用できます (有効化されている場合)。onMissingTemplate 関数にページのコンテンツを含めるには、cfinclude タグを使用します。他のメソッド(cflocation、GetPageContext().forward()、GetPageContext().include() などのタグや関数)を使用して他のページのコンテンツを含めたり、リダイレクトしないでください。次のすべての条件を満たす場合は、This.welcomeFileList 変数を使用して、この関数が実行されないようにします。

  • Web サーバーで、CFML ファイル (index.cfm など) が少なくとも 1 つ含まれたウェルカムファイルリストを使用し、ユーザーがディレクトリ名で終わる URL を入力した場合に CFML ファイルへのアクセスを試みる。
  • Web サーバーは、CFML ページが存在するかどうかを最初に判断せずに、ウェルカムファイルリストの CFML ページに対するリクエストを ColdFusion に送信する。
  • リストのファイルが存在しない Web ディレクトリのユーザーによる参照を許可する必要がある。
    詳細については、Application 変数の welcomeFileList を参照してください。

<!--- The web.xml welcome-file-list includes index.cfm.
To allow web browsing, specify index.cfm in This.welcomFileList. --->
<cfset This.welcomeFileList="index.cfm">

<cffunction name="onMissingTemplate">
<cfargument name="targetPage" type="string" required=true/>
<!--- Use a try block to catch errors. --->
<cftry>
<!--- Log all errors. --->
<cflog type="error" text="Missing template: #Arguments.targetPage#">
<!--- Display an error message. --->
<cfoutput>
<h3>#Arguments.targetPage# could not be found.</h3>
<p>You requested a non-existent ColdFusion page.<br />
Please check the URL.</p>
</cfoutput>
<cfreturn true />
<!--- If an error occurs, return false and the default error
handler will run. --->
<cfcatch>
<cfreturn false />
</cfcatch>
</cftry>
</cffunction>

注意:

OnMissingTemplate を ColdFusion Admin で設定し、ユーザーが存在しないページにアクセスしようとすると、OnMissingTemplate が呼び出され、Tomcat がそのコンテンツを返します。しかし、IIS の場合は、そのコンテンツを表示する代わりに、独自のエラーページまたは 404 ページを表示します。この問題を修正するために、isapi_redirect.properties に iis_skip_custom_errors_enable という新しいプロパティが導入されています。true に設定した場合、IIS のカスタムエラーがスキップされます。デフォルト値は false です。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー