如何在 Grails 控制器之间传递错误消息?
Posted
技术标签:
【中文标题】如何在 Grails 控制器之间传递错误消息?【英文标题】:How to pass error messages between Grails controllers? 【发布时间】:2012-01-01 09:44:45 【问题描述】:我正在尝试将错误消息从 grails 控制器传递到 grails 错误控制器,以便在 HTTP 响应中显示错误消息,但我不确定错误控制器中保存错误消息的参数是什么.
URLMappings.groovy
所有 500 个错误都映射到 ErrorsController
"500"(controller: "errors", action: "serverError")
通用控制器
def
try
//do some work
catch(Exception e)
response.sendError(500, e.getMessage())
错误控制器
def serverError =
render( how can I access the exception details here?? )
我需要访问 ErrorsController 中的异常,以便将其输出到 HTTP 响应。
【问题讨论】:
【参考方案1】:在控制器之间传递简短信息消息的常用方法是将其放在闪存范围内。例如:
def myAction =
try
...
catch (Exception e)
flash.message = e.message
response.sendError(500)
但是,在这种特殊情况下,您为什么要捕获异常?如果让异常失败,grails 将自动生成服务器错误并调用“500”映射。在您的错误控制器中,异常将以request.exception
的形式提供。
【讨论】:
我注意到flash.message
有时会显示两次;首先是初始请求,然后是下一个请求;为了解决这个问题,我改用request.message
,提出了一个问题:Flash 消息的意义何在?【参考方案2】:
在您的 ErrorsController 中:
def serverError()
render request.getAttribute('javax.servlet.error.message')
呈现来自e.getMessage()
的消息。
【讨论】:
以上是关于如何在 Grails 控制器之间传递错误消息?的主要内容,如果未能解决你的问题,请参考以下文章
GRAILS --- 如何在 g:link 中传递字符串文字到控制器方法