0

ここで説明したのと同じエラーが発生しています。

Coldfusion 10 ファイルが見つかりませんエラー

ラップトップ、Windows 8.1 Pro (OS) で Coldfusion 11、開発者版を使用しています。

人々は、この問題を克服するために 2 つのアプローチを提案しています。

1) CFAdmin で不足しているテンプレートを設定する

2) Application.cfc に onMissingTemplate 関数を設定します。

基本的にどのアプローチについてもよくわかりませんが、最初のアプローチを使用したいと思います。CFadmin で欠落しているテンプレートを設定する方法を誰か教えてもらえますか?

4

1 に答える 1

2

不足しているテンプレートをサーバーに処理させたいのはなぜですか? 私自身、アプリケーションごとに処理するのが好きです。一部のアプリケーションは、存在しないファイルにつながるリンクを持つべきではありません。他のアプリケーションは、そのコアの一部として動作する可能性があります。

adobe の docsからそのまま使用できます (この情報は cf8 docs から誤って引っ張ってきましたが、リンクは現在の docs であり、結果はほぼ同じです。

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

私のプロジェクトのいくつかでは、すべてのコンテンツをデータベースに格納する CMS (Content-Management-System) を作成しました。

CMSPages
------------
PID PTitle PFile       PContent
1   Home   /index.cfm  <b>Hey!</b> Welcome to our gollygizmo website.

そして、私 (私の実際のコードでは、ドキュメント内で直接ではなく、実際に cfincludes を使用しています。どちらの方法でも実行できますが、インライン コードで説明するのが最も簡単でした)。

<cffunction name="onMissingTemplate" returnType="boolean">
  <cfargument type="string" name="targetPage" required=true/>
  <cftry>
    <cfquery name="FindPage">
        select * from CMSPages
         where pFile = <cfqueryparam cfsqltype="nvarchar" value="#Arguments.targetPage#">
    </cfquery>
    <cfif FindPage.recordcount eq 1>
       <cfoutput query="FindPage">show page stuffs</cfoutput>
       <cfreturn true>
    <cfelse>
       <!--- Page not found, log some stuff or email stuff
          include cgi data so you know where the link came from --->
       Hey, this page doesn't exist, sorry about that.
       <cfreturn true>
    </cfif>
    <cfcatch>
      <!--- Something went wrong, log/email error info and --->
      <cfreturn false>
      <!--- We return false here to pass it back to the default error handler, which can be a handler set in cfadmin. --->
    </cfcatch>
  </cftry>
</cffunction>

このようなシナリオでは、クエリ名に基づいてクエリをキャッシュすることがおそらく有益です。次のようなことができます。

<cfquery name="local.FindPage#hash(arguments.targetpage)#" cachedWithin="...">
  ...
</cfquery>

<cfset request.FindPage=local["Findpage#hash(arguments.targetpage)#"]>

そのため、一般的な名前でドキュメントに簡単にアクセスできる場合でも、クエリは一意の名前でキャッシュされます。

ただし、サーバー中心の不足しているテンプレートの処理を引き続き好む場合は、 を検索するだけでここcold fusion admin missing templateにアクセスできます。

  1. ColdFusion Administrator で、[設定] をクリックして [サーバー設定] ページを表示します。
  2. エラー処理テンプレートを見つけるために ColdFusion が使用する絶対パスを指定します。
于 2015-02-14T09:46:07.877 に答える