圣杯 3
解决方案是注入grailsApplication
对象并使用其上下文来获取taglib bean:
class MyService {
def grailsApplication
def myMethod() {
def g = grailsApplication.mainContext.getBean('org.grails.plugins.web.taglib.ApplicationTagLib')
def appName = g.message(code: 'default.app.name')
}
}
圣杯 2
对于较旧的 grails 版本,类包略有不同:
def g = grailsApplication.mainContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib')
如果您尝试将此包与较新的 grails 版本 (3+) 一起使用,您将收到错误消息:
No bean named 'org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib' is defined.
自定义标签库
对于任何版本,如果您需要使用服务中的自定义标记库,只需使用如下代码:
def c = grailsApplication.mainContext.getBean('my.pkg.HelpfulTagLib')