当尝试通过以下方法将实例获取到 Controller 中的自定义taglib时:
def myTagLib = grailsApplication.mainContext.getBean('com.mypackage.MyTagLib')
我收到以下错误:
No bean named 'com.mypackage.MyTagLib' is defined. Stacktrace follows: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'com.mypackage.MyTagLib' is defined
但是,我能够毫无问题地获得内置taglib的实例:
def g = grailsApplication.mainContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ValidationTagLib')
根据following,这应该起作用。有谁知道为什么我的taglib无法被识别为有效的bean?
我正在使用Grails 2.4.0
最佳答案
根据Grails文档的Section 8.3.5,如果您的taglib是命名空间的(通常是一种好习惯),则可以通过使用命名空间作为方法调用的前缀来简单地调用taglib方法。
例如,如果您有一个标记库“my”命名空间,并且它具有一个名为“smiley”的方法,该方法接受属性“happy”,那么您可以在 Controller 中使用以下行,而无需额外导入:
my.smiley(happy: true)
关于grails - Grails-通过应用程序上下文获取taglib bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25551138/