在UrlMappings中连接字符串?

时间:2010-06-04 08:45:38

标签: grails groovy

我正在尝试在我的应用程序中为管理员创建单独的控制器。到目前为止,我有这样的事情:

"/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/$controller/$action?/$id?"(controller:"admin$controller")

但这两种解决方案都没有奏效。您是否知道如何使这种映射更具动态性?

2 个答案:

答案 0 :(得分:1)

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

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

我希望这有帮助!

答案 1 :(得分:0)

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

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