我有一个URL,我想根据方法处理不同的控制器。有没有办法通过UrlMappings
?
对同一个URL使用两个不同的映射不起作用(第二个覆盖第一个)...
答案 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')