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]
}

もちろん、の代わりに、任意のクロージャまたは'dメソッドpages[page1]を呼び出すことができます。.&

delegate.with実行しているクロージャのメソッド呼び出し(などp())が、それを実行しているクロージャのデリゲート(つまり、)に解決されるようにする必要がありますHtmlBuilder

于 2010-05-19T21:01:09.360 に答える