使用Groovy MarkupBuilder的HTML,如何优雅地混合标签和文本?
时间:2020-03-05 18:42:11 来源:igfitidea点击:
当使用GroovyMarkupBuilder
时,我在某些地方需要将文本输出到文档中,或者调用将文本输出到文档中的函数。目前,我正在使用未定义的标签"文本"来进行输出。有没有更好的方法来编写此代码?
li { text("${type.getAlias()} blah blah ") function1(type.getXYZ()) if (type instanceof Class1) { text(" implements ") ft.getList().each { if (it == '') return text(it) if (!function2(type, it)) text(", ") } } }
解决方案
回答
包括一个方法:
void text(n){ builder.yield n }
我们很可能(I)从具有文本方法的某个地方复制了此代码,但我们也没有复制该文本方法。由于MarkupBuilder接受标签名称的任何名称,并且浏览器会忽略未知的标记,因此它恰好起作用。
回答
实际上,现在推荐的方法是使用mkp.yield
,例如
src.p { mkp.yield 'Some element that has a ' strong 'child element' mkp.yield ' which seems pretty basic.' }
生产
<p>Some element that has a <strong>child element</strong> which seems pretty basic.</p>