0

我正在编写一个 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>

我究竟做错了什么?

4

1 回答 1

2

我对所讨论的构建器并不太熟悉,但我希望能做类似的事情:

def pages = [page1: { p("page1") }]
html.html {
   p("p")
   delegate.with pages[page1]
}

pages[page1]当然,您可以调用任何闭包或.&'d 方法来代替。

您需要 ,delegate.with以便您正在运行的闭包将其方法调用(如p())解析为运行它的闭包的委托(即HtmlBuilder)。

于 2010-05-19T21:01:09.360 回答