Grails可以通过*方法*将请求路由到不同的控制器吗?

时间:2013-09-16 20:54:35

标签: grails routing url-mapping

我有一个URL,我想根据方法处理不同的控制器。有没有办法通过UrlMappings

执行此操作

对同一个URL使用两个不同的映射不起作用(第二个覆盖第一个)...

1 个答案:

答案 0 :(得分:3)

未经测试,但您可以尝试使用以下映射:

"/myurl" {
    if(params.method == "doThis"){
        controller = "doThis"
        action = "doThisAction"
    } else if(params.method == "doThat"){
        controller = "doThat"
        action = "doThatAction"
    }
}

假设,

http://<appserver>/myurl?method=doThis
http://<appserver>/myurl?method=doThat

<强>更新
在引用HTTP方法时,您可以使用过滤器(我们有可用请求),如下所示:

class RoutingFilters{
    def filters = {
        routingCheck(uri: '/myurl/**' ) {
            before = {
                if(request.method == 'GET'){
                    redirect(controller: 'doThis', action: 'doThis')
                }

                if(request.method == 'POST'){
                    redirect(controller: 'doThat', action: 'doThat') 
                }

                //So on and so forth for PUT and DELET

                return false
            }
        }
    }
}

如果url映射看起来像:

//defaulting to "doThis" or any other "valid" controller as dummy
"/myurl/$id?"(controller: 'doThis')