2013-08-14 11 views
9

Ich versuche, meine Vorlage von taglib zu machen:Grails: Rendering-Vorlage von taglib als HTML

out << g.render(template: "/menu/sidebar") 

Dies ist, was meine Sidebar Template wie folgt aussehen:

<ul> 
    <li>TEST1</li> 
    <li>TEST2</li> 
</ul> 

Wenn ich meine Seite inspizieren in Browser erscheint ganzer Template-Code in Apostrophe so ...

"<ul> 
    <li>TEST1</li> 
    <li>TEST2</li> 
</ul>" 

... und druckt meinen hTML-Code wie ein pla im Text. Irgendeine Idee, wie man es den Inhalt als korrekten HTML-Code erkennen lässt?

Edit: Taglib Code:

class MenuTagLib { 
    static defaultEncodeAs = 'html' 
    def renderIfExists = { attrs,body-> 
     GrailsConventionGroovyPageLocator groovyPageLocator 
     println attrs.template 
     if(groovyPageLocator.findTemplateByPath(attrs.template)) 
     { 
      g.render(template:attrs.template) 
     } 
     else{ 


      out << g.render(template: "/menu/sidebar") 
     } 
    } 
} 

Die Art und Weise des Aufrufs:

<g:renderIfExists template="/${params.controller}/sidebar" plugin="untitled1" /> 
+0

AFAIK, 'out << machen (Vorlage: "/ menu/sidebar") 'sollte es tun ... –

+0

Es macht es gleich – Saraph

+0

Können Sie Ihren Taglib-Code und die Art, wie Sie es aufrufen? –

Antwort

22

Wenn ich raten müsste, würde es sein, dass Sie dies in Ihrer Klasse haben:

static defaultEncodeAs = 'html'

Sie sollten Entferne diese Zeile und versuche es erneut. Das besagt, dass es HTML-Zeichen entkommen sollte.

8

Tag-Bibliotheken sind standardmäßig auf die Codierung von Tag-Inhalten als HTML von Grails 2.3 voreingestellt. Diese kann durch Zugabe von

static defaultEncodeAs = "raw" 

So können Sie das Tag lib ausgegeben raw html statt als String

1

Versuchen mit deaktiviert werden:

static defaultEncodeAs = [taglib:'text'] 
+2

Bitte, wenn Sie mehr Upvotes erhalten möchten, müssen Sie Ihre Antwort erklären. Ihre Antwort könnte das Problem lösen, aber keine Informationen darüber geben, was falsch war und was falsch war. –

Verwandte Themen