动态生成闭包
我在groovy wslite中写了肥皂请求:
def request = {
envelopeAttributes('xmlns:art': 'http://url')
body {
'art:validate' {
item(itemValue)
}
}
}
它工作正常,但现在我必须将其更改为列表,所以最后它会是这样的:
def request = {
envelopeAttributes('xmlns:art': 'http://url')
body {
'art:validate' {
item(itemValue)
item(itemValue2)
item(itemValue3)
}
}
}
但是知道如何从List动态创建此请求。我甚至把它提取到变量:
def items = {
item(itemValue)
item(itemValue2)
item(itemValue3)
}
但我不知道如何向此闭包添加新项目。有什么简单的方法吗?
答案 0 :(得分:3)
Builder闭包是普通的Groovy代码,所以类似
def values = [itemValue, itemValue2, itemValue3]
def request = {
envelopeAttributes('xmlns:art': 'http://url')
body {
'art:validate' {
values.each { item(it) }
}
}
}
应该可以正常工作。或者如果你有
def items = {
item(itemValue)
item(itemValue2)
item(itemValue3)
}
然后你可以做
def request = {
envelopeAttributes('xmlns:art': 'http://url')
body {
'art:validate'(items)
}
}
(将现有的闭包传递给art:validate
,而不是定义一个新的内联。)
答案 1 :(得分:2)
使用您的items
关闭,这可能有效:
def request = {
envelopeAttributes('xmlns:art': 'http://url')
body {
'art:validate' {
items.delegate = delegate
items()
}
}
}
如果您需要art:validate