Estoy trabajando con Grails 2.1.1
y me gustaría agregar un puñado de URL personalizadas que se correlacionen con las Acciones del Controlador.Grails UrlMapping Redirección para mantener DRY
Puedo hacer eso, pero la asignación original todavía funciona.
Por ejemplo, he creado un mapeo add-property-to-directory
en mi UrlMappings
de la siguiente manera:
class UrlMappings {
static mappings = {
"/add-property-to-directory"(controller: "property", action: "create")
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
}
}
Ahora, puedo golpear /mysite/add-property-to-directory
y ejecutaré PropertyController.create
, lo que cabe esperar.
Sin embargo, todavía puedo presionar /mysite/property/create
, y se ejecutará el mismo método PropertyController.create
.
En el espíritu de DRY, me gustaría hacer una redirección 301 de /mysite/property/create
a /mysite/add-property-to-directory
.
No he podido encontrar la manera de hacerlo en UrlMappings.groovy
. ¿Alguien sabe de una manera en que puedo lograr esto en Grails?
¡Muchas gracias!
ACTUALIZACIÓN
Aquí está la solución que he implementado, basado en la respuesta de Tom:
UrlMappings.groovy
class UrlMappings {
static mappings = {
"/add-property-to-directory"(controller: "property", action: "create")
"/property/create" {
controller = "redirect"
destination = "/add-property-to-directory"
}
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
}
}
RedirectController.groovy
class RedirectController {
def index() {
redirect(url: params.destination, permanent: true)
}
}
No es posible a partir de ahora. Hay una solicitud de funciones para que sea posible especificar redirecciones en las asignaciones de URL: ver http://jira.grails.org/browse/GRAILS-5994 –
@sudhir Gracias, eso responde mi pregunta. ¿Podría copiar su comentario en una respuesta para poder aceptarlo? –
@sudhir, gracias por su comentario y el útil enlace ... Tom editó su respuesta y me llevó por el camino correcto para hacer lo que estaba buscando, así que acepté su respuesta. –