2014-08-28 5 views
0

При попытке получить экземпляр для пользовательского TagLib внутри контроллера, с помощью следующих действий:Grails - Получение 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 не будет признан действительным компонентом?

Я использую Grails 2.4.0

ответ

1

Согласно Section 8.3.5 Документации Grails, если TagLib это пространство имен (который, как правило, хорошая практика), вы можете просто вызвать методы TagLib с помощью пространства имен в качестве префикса к вызову метода.

Например, если у вас есть TagLib пространства имен «мой», и у него есть метод, называемый «смайлик», который принимает атрибут «счастливого», вы могли бы иметь следующую строку в контроллере без дополнительного импорта необходимого:

my.smiley(happy: true) 
+0

Вышеупомянутое верно в контроллере или другом taglib, но это не так в другом месте. Если вы хотите получить доступ к taglib из файлов src/groovy, например, вам понадобится ваш оригинальный подход. Поскольку вы загружаете компонент, вы хотите использовать зарегистрированное имя компонента, а не имя класса. –

Смежные вопросы