createlink grails
¿Cómo hacer algunas asignaciones de URL dependiendo del entorno? (2)
Puede haber una forma más limpia de hacerlo, pero logré mapear el código de error a un controlador y manejar la lógica allí:
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 crea el controlador correspondiente (grails-app / 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 los GSP correspondientes en grails-app / views / errors (accessDenied.gsp, notFound.gsp, etc.) y también en la nueva aplicación-grails / 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.
Al obtener un código de estado HTTP 500, quiero mostrar 2 páginas diferentes de acuerdo con el entorno en ejecución.
En el modo de desarrollo , quiero mostrar una página stackStrace (como la página de error predeterminada Grails 500) y en el modo de producción , quiero mostrar una página formal de "error interno".
¿Es posible y cómo puedo hacer eso?
Puede hacer asignaciones específicas del entorno dentro de UrlMappings.groovy
grails.util.GrailsUtil
al rescate
No es lindo, pero creo que resolverá tu problema
P.ej
import grails.util.GrailsUtil
class UrlMappings {
static mappings = {
if(GrailsUtil.getEnvironment() == "development") {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(view:"/devIndex")
"500"(view:''/error'')
}
if(GrailsUtil.getEnvironment() == "test") {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(view:"/testIndex")
"500"(view:''/error'')
}
if(GrailsUtil.getEnvironment() == "production") {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(view:"/prodIndex")
"500"(view:''/error'')
}
}
}