Grails3从服务调用taglib
我试图从服务中使用grails内部标记库,但收到以下错误:Grails3从服务调用taglib,grails,grails-services,Grails,Grails Services,我试图从服务中使用grails内部标记库,但收到以下错误: No signature of method: MyService.message() is applicable for argument types: (java.util.LinkedHashMap) values: [[code:default.app.name]] 这是我正在使用的代码: class MyService { def myMethod() { def appName = message
No signature of method: MyService.message() is applicable for argument types: (java.util.LinkedHashMap) values: [[code:default.app.name]]
这是我正在使用的代码:
class MyService {
def myMethod() {
def appName = message(code: 'default.app.name')
}
}
Grails 3 解决方案是注入
grailsApplication
对象,并使用其上下文获取:
Grails 2
对于较旧的grails版本,类包是:
如果您尝试将此软件包与较新的grails版本(3+)一起使用,您将收到一个错误:
No bean named 'org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib' is defined.
自定义标记库
对于任何版本,如果需要从服务使用自定义标记库,只需使用如下代码:
def c = grailsApplication.mainContext.getBean('my.pkg.HelpfulTagLib')
我建议对ApplicationAglib使用一种稍有不同的方法,它依赖于您正在使用的导入,因此与Grails版本无关,不太容易出错:
ApplicationAglib g=grailsApplication.mainContext.getBean(ApplicationAglib.class.name)如果您更喜欢def g=grailsApplication.mainContext.getBean(ApplicationTagLib.class.name),可以作为ApplicationTagLib
或不带类型
No bean named 'org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib' is defined.
def c = grailsApplication.mainContext.getBean('my.pkg.HelpfulTagLib')