Grails Goodness: Grouping URL Mappings
We can group URL mappings defined in grails-app/conf/UrlMappings.groovy
using the group()
method defined for the URL mapping DSL. The first argument is the first part of the URL followed by a closure in which we define mappings like we are used to.
Suppose we have defined the following two mappings in our UrlMappings.groovy
file, both starting with /admin:
// File: grails-app/conf/UrlMappings.groovy
class UrlMappings {
static mappings = {
// Mappings starting both with /admin:
"/admin/report/$action?/$id?(.${format})?"(controller: 'report')
"/admin/users/$action?/$id?(.${format})?"(controller: 'userAdmin')
"/"(view:"/index")
"500"(view:'/error')
}
}
We can rewrite this and use the group()
method to get the following definition:
// File: grails-app/conf/UrlMappings.groovy
class UrlMappings {
static mappings = {
// Using grouping for mappings starting with /admin:
group("/admin") {
"/report/$action?/$id?(.${format})?"(controller: 'report')
"/users/$action?/$id?(.${format})?"(controller: 'userAdmin')
}
"/"(view:"/index")
"500"(view:'/error')
}
}
When we use the createLink
and link
tags the group is taken into account. For example when we use <g:createLink controller="userAdmin"/>
we get the following URL if the application name is sample: /sample/admin/users
.
Code written with Grails 2.3.