未知数量变量的Grails 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:'

我正在使用url映射将url目录结构转换为网站中的类别,目前使用:

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"
然后你可以用它来做各种动态的事情