我正在尝试将我的cferror标记(在application.cfm中)替换为onError方法(在application.cfc中将取代application.cfm)。但我正面临着一个问题。
问题是:
对于onError,如果我试图显示一些用户友好的消息,它将显示在发生错误的位置的html中。 例如,如果在页脚中出现异常,则该消息将显示在站点的页脚中,并且还会显示站点上的所有其他内容(Html)。 但是当我使用 cferror 标记时,如果出现异常,则只显示在cferror标记中指定的模板。
所以,
是否有任何方法使onError与cferror标记一样工作?
(以显示用户友好信息的方式)
谢谢。
发布于 2014-02-27 11:48:10
你所描述的是有道理的。输出缓冲区已经部分填充了客户端的响应。
在onError方法中,在application.cfc中,您应该能够使用<cfcontent reset=true>来清空缓冲区,然后您可以发送任何您喜欢的响应。
发布于 2014-02-27 11:11:09
把这个放进你的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页面,在其中您可以向用户显示一些自定义消息,您可以向用户添加任何您想要显示的消息,在邮件中,您可以添加自己的电子邮件,所以每次出现错误时,您都会收到一封电子邮件。
https://stackoverflow.com/questions/22066204
复制相似问题