Grails为动作和控制器名称定义或获取全局变量

时间:2015-10-23 05:32:26

标签: grails groovy

我正在尝试定义一个包含操作名称和控制器名称的变量。该变量将用于记录。

这是我的控制器:

class SomeController {
 def TAG = "${controllerName}/${actionName}"
 // rest of code
}

上面的代码不起作用,因为在评估gString时不知道actionName。

所以我现在要做的是,在控制器的每个动作中,我必须把它放到位:

class SomeController {

 // .....     

 def someAction() {
   def TAG = "${controllerName}/${actionName}"
   // rest of code
   log.debug("${TAG}: logging message")
 }
}

所以我基本上希望避免在每个动作中定义TAG。有没有办法简单地将它定义为一个全局变量(或其他)一次,以便我可以在每个操作中调用它来记录,如上面的代码?

1 个答案:

答案 0 :(得分:0)

好吧最后我明白了。我使用lazy evaluation将TAG声明为闭包:

class SomeController {
 def TAG = "${-> controllerName}/${-> actionName}"
 // rest of code
}

希望它也有助于其他人!!