10

我正在尝试从 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 代码吗?

编辑:标签库代码:

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" />
4

3 回答 3

25

如果我不得不猜测,那将是您的班级中有这个:

static defaultEncodeAs = 'html'

您应该删除该行并重试。这表示它应该转义 html 字符。

于 2013-08-14T12:14:18.150 回答
10

自 Grails 2.3 起,标签库默认将标签内容编码为 HTML。这可以通过添加禁用

 static defaultEncodeAs = "raw"

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

于 2015-06-05T22:39:50.340 回答
2

尝试:

static defaultEncodeAs = [taglib:'text']
于 2015-08-03T17:40:48.660 回答