Pregunta

He estado procesando contenido GSP dinámico a través de etiquetas en mi propia taglib, que funciona bien usando código como:

    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)
    }

Ahora no estoy 100% seguro de cómo se encuentran varios recursos como taglibs, pero todos mis taglibs funcionan bien al igual que las libs de Grails normales.

El problema que tengo es que las etiquetas de AcegiSecurity no se encuentran en el contenido procesado de esta manera: por ejemplo,

<g:isLoggedIn>
   You're logged in :-)
</g:isLoggedIn>

entonces, ¿cómo obtengo GroovyPagesTemplateEngine para encontrar las etiquetas AcegiSecurity ? Supongo que puede ser algo que ver con ApplicationContext o ServletContext .

editar --- Parece que podría ser un problema de espacio de nombres sobrecargado:

    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) 
¿Fue útil?

Solución

El taglib existe, el problema fue que la biblioteca que utilizo para limpiar el html correctamente convierte las etiquetas a minúsculas ya que html no distingue entre mayúsculas y minúsculas. El problema es que las etiquetas de grails distinguen entre mayúsculas y minúsculas, por lo que la etiqueta " isLoggedIn " no se encuentra.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top