使用OnError的ColdFusion问题

时间:2014-02-27 10:48:16

标签: coldfusion coldfusion-9 coldfusion-10

我正在尝试使用 onError 方法替换 cferror 标记(位于application.cfm中)(在application.cfc中将替换application.cfm)。 但我面临一个问题 问题是:

  

对于 onError ,如果我试图显示一些用户友好的消息,那就是   显示在发生错误的地方的html中   例如,如果页脚中出现异常,则表示消息   显示在网站的页脚和其他所有内容(html)上   该网站也会显示   但是当我使用 cferror 标签时,如果   发生异常,然后只显示该模板   在cferror标记中指定。

所以,
有没有办法让 onError cferror 标签一样工作?
(在显示用户友好消息的意义上)

感谢。

2 个答案:

答案 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页面,你可以向用户显示一些自定义消息,你可以添加你想要显示给用户的任何消息,在邮件中,你可以添加自己的电子邮件,所以每次出错出现了,你会收到一封电子邮件。

相关问题