未知数量变量的Grails URL映射
我正在使用url映射将url目录结构转换为网站中的类别,目前使用:未知数量变量的Grails URL映射,grails,url-mapping,Grails,Url Mapping,我正在使用url映射将url目录结构转换为网站中的类别,目前使用: class UrlMappings { static excludes = ['/css/*','/images/*', '/js/*', '/favicon.ico'] static mappings = { "/$category1?/$category2?/$category3?/"(controller: 'category') "500"(view:'
class UrlMappings {
static excludes = ['/css/*','/images/*', '/js/*', '/favicon.ico']
static mappings = {
"/$category1?/$category2?/$category3?/"(controller: 'category')
"500"(view:'/error')
"404"(view:'/notFound')
}
}
目前这支持三个层次的深度分类。我希望能够支持N>=1的N个级别的类别
如何实现这一点?星号(单号或双号)用于显示 单个星号将匹配给定级别的任何内容:
static mappings = {
"/images/*.jpg"(controller:"image")
}
// Matches /images/logo.jpg, images/header.jpg and so on
双星号将匹配多个级别上的任何内容:
static mappings = {
"/images/**.jpg"(controller:"image")
}
// Matches /images/logo.jpg, /images/other/item.jpg and so on
结合可选映射匹配的?
,以下内容将适用于问题的上下文:
class UrlMappings {
static excludes = ['/css/*','/images/*', '/js/*', '/favicon.ico', '/WEB-INF/*']
static mappings = {
"/**?"(controller: 'category')
"500"(view:'/error')
"404"(view:'/notFound')
}
}
这个问题由来已久,但在url映射中,您也可以这样做
"/categories/$categories**?"(controller:categories)
这将把uri的其余部分加载到param变量中
/categories/animals/dogs/retrievers
///goes to categories controller and has...
params.categories //= "animals/dogs/retrievers"
然后你可以用它来做各种动态的事情