2013-08-14 15 views
9

próbuję uczynić mój szablon z TagLib:Grails: Renderowanie szablonu z TagLib jako HTML

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

To właśnie mój szablon sidebar wygląda następująco:

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

Kiedy sprawdzać moją stronę w przeglądarce, cały kod szablonu pojawia się w apostrofy tak ...

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

... i drukuje mój kod HTML, podobnie jak PLA w tekście. Masz pomysł, jak sprawić, by treść była rozpoznawalna jako właściwy kod HTML?

Edit: TagLib Kod:

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

Sposób nazywając go:

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

AFAIK, 'out << render (template: "/ menu/sidebar") 'powinno to zrobić ... –

+0

Czyni to samo – Saraph

+0

Czy możesz umieścić swój kod taglib i sposób w jaki go wywołujesz? –

Odpowiedz

22

Gdybym miał zgadywać, to to, że masz to w swojej klasie:

static defaultEncodeAs = 'html'

Powinieneś usuń tę linię i spróbuj ponownie. Oznacza to, że powinien on uciec od znaków html.

8

Biblioteki znaczników domyślnie kodują zawartość znaczników jako HTML, tak jak w przypadku Grails 2.3. to może być wyłączone przez dodanie

static defaultEncodeAs = "raw" 

To pozwoli swoją moc lib tag być surowy html zamiast jako ciąg

1

spróbuj:

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

Proszę, jeśli chcesz zdobyć więcej upvotes, musisz wyjaśnić swoją odpowiedź. Twoja odpowiedź może rozwiązać problem, ale nie podać informacji o tym, co było nie tak i co było nie tak. –

Powiązane problemy