我正在尝试使用 onError 方法替换 cferror 标记(位于application.cfm中)(在application.cfc中将替换application.cfm)。 但我面临一个问题 问题是:
对于 onError ,如果我试图显示一些用户友好的消息,那就是 显示在发生错误的地方的html中 例如,如果页脚中出现异常,则表示消息 显示在网站的页脚和其他所有内容(html)上 该网站也会显示 但是当我使用 cferror 标签时,如果 发生异常,然后只显示该模板 在cferror标记中指定。
所以,
有没有办法让 onError 与 cferror 标签一样工作?
(在显示用户友好消息的意义上)
感谢。
答案 0 :(得分:6)
你所描述的是有道理的。输出缓冲区已经部分填充了客户端的响应。
在application.cfc中的onError方法中,您应该能够使用<cfcontent reset=true>
来清空缓冲区,然后您可以发送您喜欢的任何响应。
答案 1 :(得分:0)
将它放在Application.cfc
中<cffunction name="onError" returnType="void" output="true">
<cfargument name="exception" required="true">
<cfargument name="eventname" type="string" required="true">
<cfset var errortext = "">
<cflog file="myapperrorlog" text="#arguments.exception.message#">
<cfsavecontent variable="errortext">
<cfoutput>
An error occurred: http://#cgi.server_name##cgi.script_name#?#cgi.query_string#<br />
Time: #dateFormat(now(), "short")# #timeFormat(now(), "short")#<br />
<cfdump var="#arguments.exception#" label="Error">
<cfdump var="#form#" label="Form">
<cfdump var="#url#" label="URL">
</cfoutput>
</cfsavecontent>
<cfmail to="emails@yourdomain.com" subject="Error: #arguments.exception.message#" attributeCollection="#request.mailDetails#">
#errortext#
</cfmail>
<cflocation url="errors.cfm">
</cffunction>
创建一个通用的errors.cfm页面,你可以向用户显示一些自定义消息,你可以添加你想要显示给用户的任何消息,在邮件中,你可以添加自己的电子邮件,所以每次出错出现了,你会收到一封电子邮件。