【问题标题】:Grails Custom Error Page (500) & TomcatGrails 自定义错误页面 (500) 和 Tomcat
【发布时间】:2011-02-28 17:31:30
【问题描述】:

我正在尝试在 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页面——信息和点击重定向窗口。 该页面有(我希望)正确的序言:

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page isErrorPage="true" %>

现在,当通过 NetBeans (Jetty) 在本地测试时,一切正常,并显示 errorMessage 页面;部署到 TEST 环境 (Tomcat6) 时,会显示 Tomcat 堆栈跟踪。

如何防止显示此 Tomcat 堆栈跟踪?我有两个想法——首先,我没有真正正确地转储(处理?)异常,所以它冒泡到 Tomcat——其次,Tomcat 设置了一些配置值,所以它无论如何都会显示堆栈跟踪。

如果您对此有任何想法,请告诉我。花大约 5 个小时来解决这个问题... :-/

谢谢!

【问题讨论】:

    标签: tomcat grails exception-handling


    【解决方案1】:

    你问这个问题已经一年多了,但只是为了让其他人也能从中受益......

    您是否尝试过错误页面修复插件? http://www.grails.org/plugin/error-pages-fix

    【讨论】:

      【解决方案2】:

      定义错误 = { def exception = request['javax.servlet.error.exception']?.cause?.cause 如果(异常){

              }       
          }
      

      【讨论】:

      • 对不起,不是这样...我可以使用 request.exception 获取异常本身,但无法阻止它传播到 tomcat 的处理程序...
      猜你喜欢
      • 2015-08-26
      • 2013-04-05
      • 2015-11-18
      • 2019-01-18
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      相关资源
      最近更新 更多