在grails taglib中,我正在使用标记生成器来创建看起来像这样的标记

a(href: '#', class: 'show-modal', properties) {
    mkp.yield '+'
}

在这种情况下,属性是一组格式化的对象属性:{data-internet=true, data-desc=Lorem ipsum}
我需要将属性扩展为html5数据属性。得到这样的东西。
<a href="#" class="show-modal" data-internet=true, data-desc=Lorem ipsum>
现在而不是这个我得到这个结果
<a href="#" class="show-modal">{data-internet=true, data-desc=Lorem ipsum}+</a>
这是一个grails taglib示例:
def test = { attrs ->
    MarkupBuilder markupBuilder = new MarkupBuilder(out)

    Map properties = ['data-internet': true, 'data-desc': 'Lorem ipsum...']

    markupBuilder.a(href: '', properties) {
        mkp.yield 'More info'
    }
}

从 View 中渲染<g:test/>时,我得到以下信息:
<a href="">{data-internet=true, data-desc=Lorem ipsum...}More info</a>
我期望这样:
<a href="" data-internet='true', data-desc='Lorem ipsum...'>More info</a>
谢谢您的时间和想法

最佳答案

您可以使用spread-map运算符解开 map 并传递每个条目,就好像它是一个参数一样:

markupBuilder.a(href: '', *:properties) {
    mkp.yield '+'
}

关于html - 将对象属性扩展为标记属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46185459/

10-14 15:52
查看更多