使用Groovy MarkupBuilder的HTML,如何优雅地混合标签和文本?

3 html groovy

使用Groovy时MarkupBuilder,我需要将文本输出到文档中的位置,或者调用将文本输出到文档中的函数.目前,我正在使用未定义的标签"text"来进行输出.有没有更好的方法来编写这段代码?

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(", ")
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Han*_*Gay 8

实际上,现在推荐的方法是使用mkp.yield,例如,

src.p {
    mkp.yield 'Some element that has a '
    strong 'child element'
    mkp.yield ' which seems pretty basic.'
}
Run Code Online (Sandbox Code Playgroud)

生产

<p>Some element that has a <strong>child element</strong> which seems pretty basic.</p>
Run Code Online (Sandbox Code Playgroud)

  • @DavidW:不,不是!它会产生`<yield>文本...... </ yield>`.`mkp`是一个特殊的命名空间,用于摆脱构建器的正常构建模式,并可以访问辅助标记方法,如`yield`和`yieldUnescaped`.请参阅http://docs.groovy-lang.org/latest/html/api/groovy/xml/MarkupBuilder.html#getMkp() (2认同)