Скажем, у меня есть две библиотеки тегов: Foo
, которая делает что-то конкретное для определенной части моего приложения, и Util
, которая является общей для всего приложения. Я хочу сделать что-то вроде этого:
class UtilTagLib {
def utilTag = { attrs ->
...
}
}
class FooTagLib {
def fooTag = {
...
out << g.utilTag(att1: "att1", att2: "att2")
...
}
}
Однако, когда я делаю это и пытаюсь запустить модульный тест для fooTag()
, я получаю:
groovy.lang.MissingMethodException: нет подписи метода: org.codehaus.groovy.grails.web.pages.GroovyPage.utilTag() применимо для типов аргументов: (java.util.LinkedHashMap) значения: [[att1:att1, att2 :att2]]
Я попытался дать UtilTagLib
собственное пространство имен.
static namespace = "util"
и изменение вызова на
out << util.utilTag(...)
но это меня просто заводит
groovy.lang.MissingPropertyException: такого свойства нет: util для класса: org.example.FooTagLib
Возможно, также следует отметить: в журнале я вижу:
ПРЕДУПРЕЖДЕНИЕ. Компонент с именем «groovyPagesUriService» отсутствует.
Очевидно, что UtilTagLib
не создается и не внедряется правильно. Как я могу это исправить?