Grails:将taglib中的模板呈现为HTML

时间:2013-08-14 11:50:04

标签: templates grails groovy taglib

我正在尝试从taglib渲染我的模板:

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

这是我的侧边栏模板的样子:

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

当我在浏览器中检查我的页面时,整个模板代码会出现在这样的撇号中......

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

...并打印我的html代码,就像纯文本一样。知道如何让它将内容识别为正确的HTML代码吗?

编辑:Taglib代码:

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

调用它的方式:

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

3 个答案:

答案 0 :(得分:24)

如果我不得不猜测,那就是你在课堂上有这个:

static defaultEncodeAs = 'html'

您应该删除该行并再次尝试。这说它应该逃脱html字符。

答案 1 :(得分:10)

标记库默认将标记内容编码为Grails 2.3中的HTML。 可以通过添加

来禁用此功能
 static defaultEncodeAs = "raw"

这将使您的标签lib输出为原始html而不是字符串

答案 2 :(得分:1)

尝试:

static defaultEncodeAs = [taglib:'text']