好吧,我遇到了与此处讨论的相同的错误:
我在笔记本电脑、Windows 8.1 Pro (OS) 上使用 Coldfusion 11 开发人员版。
人们在那里提出了两种方法来克服这个问题:
1)在CFAdmin中设置缺失模板
2) 在 Application.cfc 中设置 onMissingTemplate 函数
我基本上不确定任何一种方法,但是,我想采用第一种方法。谁能告诉我应该如何在 CFadmin 中设置缺少的模板?
好吧,我遇到了与此处讨论的相同的错误:
我在笔记本电脑、Windows 8.1 Pro (OS) 上使用 Coldfusion 11 开发人员版。
人们在那里提出了两种方法来克服这个问题:
1)在CFAdmin中设置缺失模板
2) 在 Application.cfc 中设置 onMissingTemplate 函数
我基本上不确定任何一种方法,但是,我想采用第一种方法。谁能告诉我应该如何在 CFadmin 中设置缺少的模板?
为什么你更喜欢让服务器处理丢失的模板?我自己,我喜欢在每个应用程序的基础上处理它。一些应用程序不应该有指向不存在文件的链接,而其他应用程序可能会将其作为其核心的一部分进行操作。
您可以直接从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
一下即可。
- 在 ColdFusion Administrator 中,点击“设置”查看“服务器设置”页面
- 指定 ColdFusion 将用于查找错误处理模板的绝对路径