Как передавать сообщения об ошибках между контроллерами Grails? - PullRequest
5 голосов
/ 18 ноября 2011

Я пытаюсь передать сообщение об ошибке от контроллера Grails на контроллер ошибок Grails, чтобы отобразить сообщение об ошибке в HTTP-ответе, но я не уверен, какой параметр содержит сообщение об ошибке в контроллере ошибок .

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.

Ответы [ 2 ]

8 голосов
/ 18 ноября 2011

Обычный способ передачи коротких информационных сообщений между контроллерами - это поместить их в область флеш-памяти. Например:

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

В данном конкретном случае, однако, почему вы ловите исключение? Если вы позволите исключению провалиться, Grails автоматически сгенерирует ошибку сервера и вызовет сопоставление «500». В вашем контроллере ошибок исключение будет доступно как request.exception.

0 голосов
/ 26 мая 2015

В вашем ErrorsController :

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

выводит сообщение от e.getMessage().

...