我一直在通过我自己的 taglib 中的标签处理动态 GSP 内容,使用如下代码可以正常工作:
def GroovyPagesTemplateEngine groovyPagesTemplateEngine
...
def processGSPContent(model, name, out) {
log.debug("model is $model")
Template t = groovyPagesTemplateEngine.createTemplate(model.content, name + ".gsp")
Writable w = t.make(model: model)
w.writeTo(out)
}
现在我不能 100% 确定如何找到各种资源(如 taglib),但我所有的 taglib 都可以正常工作,就像普通的 grails 库一样。
我遇到的问题是AcegiSecurity
在以这种方式处理的内容中找不到 's 标签:例如
<g:isLoggedIn>
You're logged in :-)
</g:isLoggedIn>
那么如何才能GroovyPagesTemplateEngine
找到AcegiSecurity
标签呢?我猜这可能与ApplicationContext
或有关ServletContext
。
编辑---看起来它可能是一个重载的命名空间问题:
Caused by: org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: Tag [ifnotloggedin] does not exist.
No tag library found for namespace: g at home_pmcneil_devel_Groupie_grails_app_views_display_page_gsp.run(home_pmcneil_devel_Groupie_grails_app_views_display_page_gsp:32)