2008-08-22 4 views
3

Groovy MarkupBuilderを使用しているときに、ドキュメントにテキストを出力したり、ドキュメントにテキストを出力する関数を呼び出す必要がある場所があります。現在、未定義のタグ "text"を使用して出力を行っています。このコードを書く良い方法はありますか?HTMLはGroovy MarkupBuilderを使用して、タグとテキストをどのようにエレガントに混合しますか?

li{ 
    text("${type.getAlias()} blah blah ") 
    function1(type.getXYZ()) 
    if (type instanceof Class1) { 
    text(" implements ") 
    ft.getList().each{ 
     if (it == '') return 
     text(it) 
     if (!function2(type, it)) text(", ") 
    } 
    } 
} 

答えて

2

方法を含める:

void text(n){ 
    builder.yield n 
} 

ほとんどの場合、あなた(私は)テキストメソッドを持っていたどこからこのコードをコピーしていますが、テキストの方法をコピーしませんでした。 MarkupBuilderはタグの名前に任意の名前を受け入れ、ブラウザは未知のマークアップを無視するため、うまく動作しました。

+0

注意を生成するために

src.p { mkp.yield 'Some element that has a ' strong 'child element' mkp.yield ' which seems pretty basic.' } 

、例えば、を使用することです... – dedek

8

実際には、推奨される方法は、今では `builder`は` MarkupBuilder`のインスタンスではない場合にのみ機能することを

<p>Some element that has a <strong>child element</strong> which seems pretty basic.</p> 
+1

mkpとは何ですか? MarkupBuilderのインスタンスですか? –

+2

@DavidW:そうじゃない!それは、テキスト ' ... 'を生成します。 'mkp'はビルダーの通常のビルディングモードから離れて、' yield'や 'yieldUnescaped'のようなヘルパーマークアップメソッドにアクセスするための特別な名前空間です。 http://docs.groovy-lang.org/latest/html/api/groovy/xml/MarkupBuilder.html#getMkp()を参照してください。 – dedek

関連する問題