我正在使用grails 2的权威指南(使用grails 2.3.7)学习grails,当我查看自定义标记库时,它提供了一个示例自定义标记,如下所示:
def repeat = { attrs, body ->
int n = attrs.int('times)
n?.times { counter ->
out << body(counter +1)
}
}
所以当我像这样使用这个标签时:
<g:repeat times="3">
Hello number ${it}<br>
</g:repeat>
我希望在渲染的HTML上获得三行:
Hello number 1
Hello number 2
Hello number 3
相反,我得到:
hello number 1<br>hello number 2<br>hello number 3<br>
我找到了看起来应该有帮助的方法,比如decodeHTML()但是我因此无法改变我想要的输出,而且我不确定我做错了什么。
我尝试过:
out <<body.decodeHTML()
但是我得到一个空指针错误......
答案 0 :(得分:9)
除非你的taglib中有其他内容或者GSP中有异常调用标记,否则这没有意义。
你的taglib可能有类似defaultEncodeAs =&#39; html&#39;在它?
答案 1 :(得分:0)
使用这样的标签:
<g:repeat times="3">
Hello number ${it}<br/>
</g:repeat>
HTML5可以呈现<br>
,但似乎您使用的是版本4或更低版本。