grails中的自定义标记库未正确传递HTML标记

时间:2014-04-14 21:24:35

标签: grails taglib

我正在使用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()

但是我得到一个空指针错误......

2 个答案:

答案 0 :(得分:9)

除非你的taglib中有其他内容或者GSP中有异常调用标记,否则这没有意义。

你的taglib可能有类似defaultEncodeAs =&#39; html&#39;在它?

答案 1 :(得分:0)

使用这样的标签:

<g:repeat times="3">
    Hello number ${it}<br/>
</g:repeat>

HTML5可以呈现<br>,但似乎您使用的是版本4或更低版本。