【问题标题】:grails access controller from taglib来自 taglib 的 grails 访问控制器
【发布时间】:2011-03-28 17:11:33
【问题描述】:

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

class FooTagLib {
    static namespace = 'foo'

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

我想这样做是因为我将一些数据存储在控制器的属性中,并希望在 TagLib 中访问它。我知道这听起来可能很奇怪,但请幽默一下……

【问题讨论】:

    标签: grails groovy


    【解决方案1】:

    在你的 msg tagLib 中:

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

    与视图一样,您可以通过controllerNameactionName 访问当前控制器和操作

    【讨论】:

    • Fabien,为什么使用pageScope.controllerName 而不仅仅是controllerName
    【解决方案2】:

    试试这样的...

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

    【讨论】:

    • 我无法硬编码控制器的名称(whateverController),因为我无法知道哪个控制器处理了当前请求
    • 啊,那你难倒我了。对不起。
    • 你能把它们作为参数传递给标签库吗?我相信您可以通过 params.controller 访问它。只要确保你的 taglib 需要传递给它的控制器实例。
    猜你喜欢
    • 1970-01-01
    • 2014-09-06
    • 2018-07-27
    • 2015-12-30
    • 2013-07-23
    • 1970-01-01
    • 2018-04-19
    • 2017-10-10
    • 1970-01-01
    相关资源
    最近更新 更多