Taglib manquant lors de l'utilisation de GroovyPagesTemplateEngine
Question
J'ai traité du contenu SGP dynamique via des balises dans ma propre balise, qui fonctionne parfaitement avec un code tel que:
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)
}
Maintenant, je ne suis pas sûr à 100% de la façon dont diverses ressources telles que taglibs sont trouvées, mais toutes mes taglibs fonctionnent correctement, tout comme les libs normales de Grails.
Le problème que j'ai, c'est que les balises de AcegiSecurity
ne figurent pas dans le contenu traité de cette manière: par exemple.
<g:isLoggedIn>
You're logged in :-)
</g:isLoggedIn>
alors comment obtenir que GroovyPagesTemplateEngine
trouve les balises AcegiSecurity
?
Je suppose que cela pourrait avoir quelque chose à voir avec ApplicationContext
ou ServletContext
.
modifier --- On dirait qu'il pourrait s'agir d'un problème d'espace de nom surchargé:
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)
La solution
La balise existe bel et bien, le problème était que la bibliothèque que j’utilise pour nettoyer le code HTML convertit à juste titre les balises en minuscules car le code HTML n’est pas sensible à la casse. Le problème, c’est que les balises Grails sont sensibles à la casse, donc la balise "isLoggedIn". est introuvable.