Taglib mancanti quando si utilizza GroovyPagesTemplateEngine
Domanda
Ho elaborato contenuti GSP dinamici tramite tag nel mio taglib che funziona perfettamente usando codice come:
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)
}
Ora non sono sicuro al 100% su come vengano trovate varie risorse come i taglibs, ma tutti i miei taglibs funzionano bene come fanno le normali librerie grails.
Il problema che ho è che i tag AcegiSecurity
non si trovano nei contenuti elaborati in questo modo: ad esempio
<g:isLoggedIn>
You're logged in :-)
</g:isLoggedIn>
quindi come posso ottenere GroovyPagesTemplateEngine
per trovare i tag AcegiSecurity
?
Immagino che potrebbe avere a che fare con ApplicationContext
o ServletContext
.
Modifica --- Sembra che potrebbe essere un problema di spazio dei nomi sovraccarico:
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)
Soluzione
Il tagliob esiste, il problema era che la libreria che uso per ripulire l'html converte giustamente i tag in minuscolo poiché HTML non fa distinzione tra maiuscole e minuscole. Il problema è che i tag grails sono case sensitive, quindi il tag " isLoggedIn " non è stato trovato.