来自taglib的grails访问控制器

来自taglib的grails访问控制器,grails,groovy,Grails,Groovy,是否可以从标记库中访问当前控制器实例?例如: class FooTagLib { static namespace = 'foo' def msg = { attrs, body -> // Can I get a reference to the current controller here? } } 之所以要这样做,是因为我将一些数据存储在控制器的属性中,并希望在TagLib中访问它。我意识到这可能听起来很奇怪,但请幽默我…

是否可以从标记库中访问当前控制器实例?例如:

class FooTagLib {
    static namespace = 'foo'

    def msg = { attrs, body ->          
      // Can I get a reference to the current controller here?
    }
}

之所以要这样做,是因为我将一些数据存储在控制器的属性中,并希望在TagLib中访问它。我意识到这可能听起来很奇怪,但请幽默我….

试试这样的东西

def ctl = grailsApplication.getArtefactByLogicalPropertyName('Controller', 'whateverController') 

在msg tagLib中:

grailsApplication.getArtefactByLogicalPropertyName('Controller', pageScope.controllerName)

像视图一样,您可以通过
controllerName
actionName

访问当前控制器和操作。我无法硬编码控制器的名称(whateverController),因为我无法知道哪个控制器处理了当前请求啊,那么您就难倒我了。对不起,你能把它们作为参数传递给taglib吗?我相信您可以通过params.controller访问它。只要确保您的taglib需要传递给它的控制器实例。Fabien,为什么要使用
pageScope.controllerName
而不是
controllerName