我通过迭代控制器人工制品并动态构建 url 映射来实现这一点:
class UrlMappings {
static mappings = {
def adminControllers = ACH.grailsApplication.controllerClasses
.findAll({ it.logicalPropertyName.endsWith('Admin')})
.collect({ it.logicalPropertyName })
adminControllers.each { controllerName ->
def shortName = controllerName - 'Admin'
"/admin/$shortName/$action?/$id?" (controller: controllerName)
}
}
}
其中 ACH 是Burt Beckwith在此博客文章中ApplicationContextHolder
描述的一种习惯。
编辑:
这将创建 url 结构,以便/admin/blah
映射到BlahAdminController
,但不包括/admin/blahAdmin
.