在Grails代码抛出任何未处理的异常之后,我正在尝试实现简单的自定义错误页面。我已经将500映射到我的控制器:
"500" (
controller: "error",
action: "serverError"
)并在控制器中处理异常:
def serverError = {
try {
// first check, if some exception was reported
if (!request.exception) {
return
}
// send mail with stack trace if requested
if (shouldSendErrorReports) {
log.debug "Mail was sent out successfully..."
}
} catch (Throwable e) {
log.error "Error while reporting an error: " + e
}
// redirect to error message
redirect (
action: "errorMessage"
)
}
// lines omitted for clarity"errorMessage“操作只是一个简单的视图,默认情况下使用静态内容呈现GSP页面--信息和单击重定向窗口。页面有(我希望)正确的prolog:
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page isErrorPage="true" %>现在,当通过NetBeans (Jetty)在本地测试它时,一切正常,并显示errorMessage页面;当部署到测试环境(Tomcat6)时,将显示Tomcat stack-trace。
如何防止这个Tomcat堆栈跟踪被显示?我有两个想法--首先,我真的没有正确地抛弃(处理?)异常,所以它冒泡到Tomcat --第二,Tomcat设置了一些配置值,所以无论如何它都会显示堆栈跟踪。
如果你对此有任何想法,请让我知道。花5个小时弄清楚这一点...:-/
谢谢!
发布于 2010-06-07 22:36:28
定义错误={定义异常= request'javax.servlet.error.exception'?.cause?.cause if(异常){
}
}发布于 2011-07-28 07:38:21
你问这个问题已经一年多了,但为了让其他人也能从中受益……
你试过error-pages-fix插件吗?http://www.grails.org/plugin/error-pages-fix
https://stackoverflow.com/questions/2990173
复制相似问题