Groovy markupbuilder标签

时间:2010-06-18 12:39:51

标签: groovy markup

有没有办法修改上一个答案中的代码

import groovy.xml.MarkupBuilder

def writer = new StringWriter()
def builder = new MarkupBuilder(writer)

def awaiting = ['one', 'two', 'three']

builder.html {
    ul {
        awaiting.each { 
            li(it.toString())
        }
    }
}

println writer.toString()

这样,如果你添加一个标签而不是你发送它 - 比如

    builder.html{
tag{
    awaiting.each{}
    }
} return result

可以是'ol'或'ul'例如

2 个答案:

答案 0 :(得分:2)

您可以依赖于GStrings以及您可以通过字符串值调用函数的事实。

import groovy.xml.MarkupBuilder

def writer = new StringWriter()
def builder = new MarkupBuilder(writer)

def awaiting = ['one', 'two', 'three']
def tag = 'ol'

builder.html {
    "$tag" {
        awaiting.each { 
            li(it.toString())
        }
    }
}

println writer.toString()

答案 1 :(得分:0)

你也可以使用比上面更明确的invokeMethod,虽然时间稍长。

builder.html {
  invokeMethod(tag) {
    awaiting.each { 
      li it
} } }