0

好吧,我遇到了与此处讨论的相同的错误:

Coldfusion 10 文件未找到错误

我在笔记本电脑、Windows 8.1 Pro (OS) 上使用 Coldfusion 11 开发人员版。

人们在那里提出了两种方法来克服这个问题:

1)在CFAdmin中设置缺失模板

2) 在 Application.cfc 中设置 onMissingTemplate 函数

我基本上不确定任何一种方法,但是,我想采用第一种方法。谁能告诉我应该如何在 CFadmin 中设置缺少的模板?

4

1 回答 1

2

为什么你更喜欢让服务器处理丢失的模板?我自己,我喜欢在每个应用程序的基础上处理它。一些应用程序不应该有指向不存在文件的链接,而其他应用程序可能会将其作为其核心的一部分进行操作。

您可以直接从adobe 的文档中使用(我不小心从 cf8 文档中提取了此信息,但链接是指向当前文档的,结果基本相同。

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

对于我的一些项目,我编写了一个 CMS(内容管理系统),它以时尚的方式将所有内容存储在数据库中。

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 回答