Grails - 通过应用程序上下文获取taglib bean

时间:2014-08-28 14:19:30

标签: grails taglib spring-bean

尝试通过以下方法将实例获取到控制器中的自定义taglib时:

def myTagLib = grailsApplication.mainContext.getBean('com.mypackage.MyTagLib')

我收到以下错误:

  

没有名为' com.mypackage.MyTagLib'被定义为。堆栈跟踪   如下:   org.springframework.beans.factory.NoSuchBeanDefinitionException:没有   豆名为' com.mypackage.MyTagLib'已定义

但是,我能够毫无问题地获得内置taglib的实例:

def g = grailsApplication.mainContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ValidationTagLib')

根据following,这应该有效。有没有人有任何想法为什么我的taglib不会被识别为有效的bean?

我正在使用Grails 2.4.0

1 个答案:

答案 0 :(得分:1)

根据Grails文档的Section 8.3.5,如果你的taglib是命名空间(这通常是一个好习惯),你可以通过使用你的命名空间作为方法调用的前缀来调用taglib方法。

例如,如果你有一个taglib命名空间“my”并且它有一个名为“smiley”的方法接受一个属性“happy”,你可以在控制器中有以下行,不需要额外的导入:

my.smiley(happy: true)