Предположим, что у меня есть следующая конфигурация в моем файле conf/InjectionConfig.groovy
:
x {
a = { attrs, body -> out << "hello" }
b = { attrs, body -> out << "goodbye" }
}
и что у меня есть простая taglib, такая как
class XTagLib {
static namespace = "x"
}
Что я хочу сделатьв том, что когда я набираю <x:a />
для любого из моих представлений, это напечатало бы hello
.Я уже пытался внедрить их в метакласс taglib как свойство и метод, но ни один из них не работает.Например, вот в основном то, что я делаю сейчас в службе:
public void afterPropertiesSet() throws Exception {
GroovyClassLoader classLoader = new GroovyClassLoader(getClass().classLoader)
def slurper = new ConfigSlurper(GrailsUtil.environment)
ConfigObject xConfig
try {
xConfig = slurper.parse(classLoader.loadClass('InjectionConfig'))
}
catch (e) {
e.printStackTrace()
}
xConfig.x.each({
if ( !XTagLib.metaClass.hasMetaProperty(it.key) ) {
XTagLib.metaClass.registerBeanProperty(it.key, { args ->
def attrs = args[0], body = args[1]
it.value.call(attrs, body)
}
}
})
}
Я просто делаю это неправильно или это вообще возможно в настоящее время?