Grails 连接URL映射中的字符串?

Grails 连接URL映射中的字符串?,grails,groovy,Grails,Groovy,我正在尝试在我的应用程序中为管理员创建单独的控制器。到目前为止,我得到了类似的结果: "/admin/article/$action?/$id?"(controller:"adminArticle") "/admin/comment/$action?/$id?"(controller:"adminComment") 如此类推,适用于所有管理控制器。我想让它更简单,尝试: "/admin/$controller?/$action?/$id?"(controller:"admin" + contr

我正在尝试在我的应用程序中为管理员创建单独的控制器。到目前为止,我得到了类似的结果:

"/admin/article/$action?/$id?"(controller:"adminArticle")
"/admin/comment/$action?/$id?"(controller:"adminComment")
如此类推,适用于所有管理控制器。我想让它更简单,尝试:

"/admin/$controller?/$action?/$id?"(controller:"admin" + controller[0].toUpperCase() + controller[1..-1])


但这两种解决方案都不起作用。你知道如何使这个映射更加动态吗?

也许你不应该使用“控制器”这个词。我没有试过,但这可以奏效:

"/admin/$contr/$action?/$id?"(controller:"admin$contr") // if first letter of contr is upper case

如果使用闭包,则可以自定义控制器值

/$mode/$contr"{
  action = "someAction"
  controller = {
    if (params.mode == "api") {
      return params.contr+"API"
    } 
    else {
      return params.contr
    }
  }
  constraints {
    mode inList:["menu", "api"]
  }
}
我希望这有帮助

/$mode/$contr"{
  action = "someAction"
  controller = {
    if (params.mode == "api") {
      return params.contr+"API"
    } 
    else {
      return params.contr
    }
  }
  constraints {
    mode inList:["menu", "api"]
  }
}