Вопрос

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

Что я делаю неправильно?

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top