我正在使用网址映射将网址目录结构转换为网站中的类别,目前正在使用:
class UrlMappings {
static excludes = ['/css/*','/images/*', '/js/*', '/favicon.ico']
static mappings = {
"/$category1?/$category2?/$category3?/"(controller: 'category')
"500"(view:'/error')
"404"(view:'/notFound')
}
}
目前,这支持三个级别的类别。我希望能够支持N级深度,其中N> = 1。
如何实现这一目标?
答案 0 :(得分:6)
星号(单号或双号)用于wilcard url mapping。
单个星号将匹配给定级别的任何内容:
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')
}
}
答案 1 :(得分:0)
这个问题很古老,但是在url映射中您也可以这样做
"/categories/$categories**?"(controller:categories)
这会将uri的其余部分加载到param变量中
/categories/animals/dogs/retrievers
///goes to categories controller and has...
params.categories //= "animals/dogs/retrievers"
然后您可以使用它来执行各种动态的事情