繁体   English   中英

Groovy MarkupBuilder-不产生原始文本

[英]Groovy MarkupBuilder - not yielding raw text

我有以下代码段用于编写一系列包含图标和文本的按钮元素:

def tagcloud = { attrs, body ->

    def mb = new MarkupBuilder(out)

    mb.ul('class': 'list-inline') {
        def tag = it
        attrs.tags.split(",").each {
            li {
                button('class': 'btn btn-default', 'type': 'submit') {
                    i('class': 'fa fa-tag', '')
                    mb.yield('test')
                }
            }   
        }
    }
}

但是,我发现在使用yield函数时,标记生成器将yield调用作为标记输出到我的html中,而不是原始文本中:

<li>
    <button class="btn btn-default" type="submit">
      <i class="fa fa-tag"></i>
      <yield>test</yield>
    </button>
</li>

根据我的研究,这是推荐的方法: 使用Groovy MarkupBuilder的HTML,如何优雅地混合标签和文本?

有谁知道为什么这样的文字被这样包装?

我正在使用Grails 2.3.8。

这样简单:

def tagcloud = { attrs, body ->

    def mb = new MarkupBuilder(out)

    mb.ul('class': 'list-inline') {
        def tag = it
        attrs.tags.split(",").each {
            li {
                button('class': 'btn btn-default', 'type': 'submit') {
                    i('class': 'fa fa-tag', '')
                    mkp.yield('test')
                }
            }   
        }
    }
}

mkp是一个特殊的命名空间,用于逃避构建器的常规构建模式,并访问诸如'yield'和'yieldUnescaped'之类的辅助标记方法。 有关更多详细信息,请参见javadoc中的getMkp()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM