我正在尝试从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" />
答案 0 :(得分:24)
如果我不得不猜测,那就是你在课堂上有这个:
static defaultEncodeAs = 'html'
您应该删除该行并再次尝试。这说它应该逃脱html字符。
答案 1 :(得分:10)
标记库默认将标记内容编码为Grails 2.3中的HTML。 可以通过添加
来禁用此功能 static defaultEncodeAs = "raw"
这将使您的标签lib输出为原始html而不是字符串
答案 2 :(得分:1)
尝试:
static defaultEncodeAs = [taglib:'text']