Как я делегирую построение методу? - PullRequest
0 голосов
/ 19 мая 2010

Я пишу 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>

Что я делаю не так?

1 Ответ

2 голосов
/ 20 мая 2010

Я не слишком знаком с рассматриваемым строителем, но я ожидаю, что буду делать что-то вроде:

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

Вместо pages[page1], конечно, вы можете вызвать любое замыкание или метод .&.

Вам нужен delegate.with, чтобы выполняемое вами закрытие имело свои вызовы методов (например, p()), разрешенные делегату выполняющего его закрытия (то есть HtmlBuilder).

...