グレイルズ 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.
カスタムタグライブラリ
どのバージョンでも、サービスからカスタム taglib を使用する必要がある場合は、次のようなコードを使用するだけです。
def c = grailsApplication.mainContext.getBean('my.pkg.HelpfulTagLib')