簡體   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