我正在编写一个Groovlet,并希望将HTML构建器的一部分委托给一个方法,但是很难让它工作。以下是我的内容:
def pages = [page1: html.p("page1")]
html.html {
p("p")
pages[page1]
}
我期待以下输出:
<html>
<p>p</p>
<p>page1</p>
</html>
相反,我得到的是以下内容:
<p>text</p>
<html>
<p>p</p>
</html>
我做错了什么?
答案 0 :(得分:2)
我对这个有问题的建筑师并不过分熟悉,但我希望能做到这样的事情:
def pages = [page1: { p("page1") }]
html.html {
p("p")
delegate.with pages[page1]
}
当然,您可以调用任何闭包或pages[page1]
方法,而不是.&
。
你需要delegate.with
以便你正在运行的闭包有它的方法调用(如p()
)解析为运行它的闭包的委托(即HtmlBuilder
)。