2011-11-18 87 views
5

我想从grails控制器传递错误消息到grails错误控制器,以便在HTTP响应中显示错误消息,但我不确定哪些参数在错误控制器中保存了错误消息。如何在Grails控制器之间传递错误消息?

URLMappings.groovy

所有500错误都映射到ErrorsController

"500"(controller: "errors", action: "serverError") 

GenericController

def { 
    try{ 
    //do some work 
    }catch(Exception e){ 
    response.sendError(500, e.getMessage()) 
    } 
} 

ErrorsController

def serverError = { 

    render(how can I access the exception details here??) 

} 

我需要访问ErrorsController中的异常,以便我可以将它输出到HTTP响应中。

回答

8

在控制器之间传递简短信息消息的常用方法是将其放置在闪存范围中。例如:

def myAction = { 
    try { 
     ... 
    } catch (Exception e) { 
     flash.message = e.message 
     response.sendError(500) 
    } 
} 

但是,在这种特殊情况下,您为什么要捕捉异常?如果让异常通过,grails会自动生成服务器错误并调用“500”映射。在您的错误控制器中,该例外将作为request.exception提供。

+0

甜,工作很好,thx – raffian

+0

我注意到'flash.message'有时会显示两次;首先用于初始请求,再用于下一个请求;为了解决这个问题,我使用'request.message'来代替这个问题:闪存信息有什么意义? – raffian

0

在你ErrorsController

def serverError() { 
    render request.getAttribute('javax.servlet.error.message') 
} 

呈现从e.getMessage()消息。

相关问题