Puede haber una forma más limpia de hacer esto, pero yo había conseguido con la cartografía del código de error a un controlador y gastos de la lógica que hay:
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?" { constraints {} }
"/"(view:"/index")
"403"(controller: "errors", action: "accessDenied")
"404"(controller: "errors", action: "notFound")
"405"(controller: "errors", action: "notAllowed")
"500"(view: '/error')
}
}
y luego crear el controlador correspondiente (griales aplicación /conf/controllers/ErrorsController.groovy):
import grails.util.Environment
class ErrorsController extends AbstractController {
def accessDenied = {}
def notFound = {}
def notAllowed = {}
def serverError = {
if (Environment.current == Environment.DEVELOPMENT) {
render view: '/error'
}
else {
render view: '/errorProd'
}
}
}
tendrá que crear las GSP correspondientes en Grails-app/views/errores (accessDenied.gsp, notFound.gsp, etc.) y también el nuevo grails-app/views/errorProd.gsp. Al enrutar a un método de controlador para todos los códigos de error, es más fácil agregar lógica a los otros manejadores de código de error en el futuro.
Thx. Lo intentaré y actualizaré este hilo. ¿No es posible tener la condición if SÓLO para el mapeo "500"? – fabien7474
Sí. Lo anterior es solo un ejemplo – tinny
muchas gracias. ¡Funciona! – fabien7474