Pregunta

Estoy escribiendo un Groovlet y me gustaría delegar parte del constructor de HTML a un método, pero estoy teniendo problemas para conseguir que funcione. A continuación se muestra lo que tengo:

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

Estoy esperando el siguiente resultado:

<html>
  <p>p</p>
  <p>page1</p>
</html>

En cambio, lo que se ve es la siguiente:

<p>text</p> 
<html> 
  <p>p</p>
</html>

¿Qué estoy haciendo mal?

¿Fue útil?

Solución

No estoy demasiado familiarizado con el constructor en cuestión, pero yo esperaría que estar haciendo algo como:

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

En lugar de pages[page1], por supuesto, usted podría llamar a cualquier cierre o un método .&'d.

Se necesita el delegate.with manera que el cierre que se está ejecutando tiene sus llamadas a métodos (como p()) resolvió el delegado del cierre de ejecutarlo (es decir, el HtmlBuilder).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top