2010-05-19 7 views
0

J'écris un Groovlet et je voudrais déléguer une partie du constructeur HTML à une méthode mais j'ai du mal à la faire fonctionner. Voici ce que j'ai:Comment déléguer la construction à une méthode?

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

J'attends la sortie suivante:

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

Au lieu de cela ce que je reçois est la suivante:

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

Qu'est-ce que je fais mal?

Répondre

2

Je ne suis pas trop familier avec le constructeur en question, mais je pense à faire quelque chose comme:

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

Au lieu de pages[page1], bien sûr, vous pourriez appeler une fermeture ou un .& « d méthode.

Vous devez le delegate.with pour que la fermeture que vous utilisez a ses appels de méthode (comme p()) résolus au délégué de la fermeture de l'exécuter (c'est le HtmlBuilder).

Questions connexes