Grails 2.3.8检查字符串出现的url映射

时间:2014-05-30 23:04:56

标签: grails grails-2.0 url-mapping

我正在尝试映射以下内容

  

//本地主机:8080 /用户/注册/&安培;调试= 1

...

  

//本地主机:8080 /用户/&安培;调试= 1

如果出现字符串'& debug = 1',则执行some-controller的操作。

2 个答案:

答案 0 :(得分:2)

您可以在需要时使用filter进行重定向。

class DebugFilters {
    def filters = {
        debugCheck(controller: '*', action: '*') {
            before = {
                if (params.debug == '1') {
                    redirect(controller: 'some', action: 'debug')
                    return false
                }
            }
        }
    }
}

如果您只想在特定网址映射的控制器和操作之间切换,那么您也可以使用如下的网址映射,而不是完全使用过滤器:

//UrlMappings.groovy
"/user/login" {
    controller = { params.debug == '1' ? 'some' : 'user' }
    action     = { params.debug == '1' ? 'debug': 'index' }

    // Note the use of a closure in ternary operations
    // params is available in a closure (delegated) 
    // because it is not available in by default
}

答案 1 :(得分:1)

你可以使用像这样的URLMapping

"/**&debug=1"(controller:"defaultDebug"){
    action = [GET: "show"]
}

通过使用双通配符,您可以捕获以&debug=1

结尾的任何内容