link createlink grails url-mapping

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'') } } }